gpt4 book ai didi

java - 仅使用 java 中的 string 类检查字谜

转载 作者:行者123 更新时间:2023-12-02 12:10:56 24 4
gpt4 key购买 nike

我有一项作业要编写一个程序,该程序接受 2 个单词,然后返回它们是否是彼此的字谜词。目前我正在尝试循环第一个单词的每个字母,并检查它是否与第二个单词中的字母匹配。然后,我将计数器 int 与任一单词的总长度进行比较,如果它们是字谜词,则应该相等。

我有一个错误,当前如果单词是字谜词,我会得到一个向上计数的无限循环,并且对以程序结尾的单词中的字母数进行计数,如果不是,则不会关闭。

作业指出“仅使用 String 类中可用的方法。不要使用其他 Java 库实用程序”,因此我无法将单词放入数组并使用 arrays.Sort。

import java.util.Scanner;

public class anagram {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter two strings");

String s1 = scanner.next();
String s2 = scanner.next();


int counter = 0;

int number1 = 0;
int number2 = 0;

if(s1.length() != s2.length()) {
System.out.println("The strings are not anagrams");
} else {


for(int i = 0; i < s1.length() ; i++) {
for(int j = 0; j < s1.length() ; i++) {

// number1 = i;
// number2 = j;

if(i == s1.length()){
number1 = i - 1;
}
if(j == s2.length()){
number2 = j - 1;
}


if(s1.charAt(number1) == s2.charAt(number2)) {
counter ++ ;
System.out.println(counter);
}

}

}
System.out.println(counter);

}

System.out.println(s1 + " " + s2 + " " + counter);

}

}

最佳答案

你的问题就出在这里

 for(int j = 0; j < s1.length() ; j++) {   ///change i to j

您正在检查 n^2 次,但是只需 2n 次即可完成。

  1. 获取第一个字符串中所有字母的出现次数(存储在数组中)
  2. 获取第二个字符串中所有字母的出现次数(存储在数组中)
  3. 同时循环遍历两个数组并比较所有出现的情况是否相同。

您的数组将有 26 个元素,存储出现的 a-z(如果不区分大小写)

关于java - 仅使用 java 中的 string 类检查字谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com