我需要输入两个字符串,第一个字符串是任意字,第二个字符串是前一个字符串的一部分,我需要输出第二个字符串出现的次数。例如:String 1 = CATSATONTHEMAT String 2 = AT。输出为3,因为AT在CATSATONTHEMAT中出现三次。这是我的代码:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String word8 = sc.next();
String word9 = sc.next();
int occurences = word8.indexOf(word9);
System.out.println(occurences);
}
当我使用此代码时,它会输出1
。
答案 0 :(得分:11)
有趣的解决方案:
public static int countOccurrences(String main, String sub) {
return (main.length() - main.replace(sub, "").length()) / sub.length();
}
基本上我们在这里做的是从main
中删除sub
的所有实例所得的字符串长度减去main
的长度 - 然后我们将此数字除以sub
的长度,用于确定删除了sub
的出现次数,并给出了答案。
所以最后你会得到这样的东西:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String word8 = sc.next();
String word9 = sc.next();
int occurrences = countOccurrences(word8, word9);
System.out.println(occurrences);
sc.close();
}
答案 1 :(得分:3)
您也可以尝试:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String word8 = sc.nextLine();
String word9 = sc.nextLine();
int index = word8.indexOf(word9);
sc.close();
int occurrences = 0;
while (index != -1) {
occurrences++;
word8 = word8.substring(index + 1);
index = word8.indexOf(word9);
}
System.out.println("No of " + word9 + " in the input is : " + occurrences);
}
答案 2 :(得分:1)
为什么没有人发布最明显,最快速的解决方案?
int occurrences(String str, String substr) {
int occurrences = 0;
int index = str.indexOf(substr);
while (index != -1) {
occurrences++;
index = str.indexOf(substr, index + 1);
}
return occurrences;
}
答案 3 :(得分:0)
另一种选择:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String word8 = sc.next();
String word9 = sc.next();
int occurences = word8.split(word9).length;
if (word8.startsWith(word9)) occurences++;
if (word8.endsWith(word9)) occurences++;
System.out.println(occurences);
sc.close();
}
startsWith
和endsWith
是必需的,因为split()
省略了尾随空字符串。