java找重复字符串_java中有没有方法可以找出字符串中有几个相同的字符

展开全部

成员方法public int indexOf(int ch , int fromIndex)返回由参数ch指定的字符在当前字符串的字符序列中出现的不小于fromIndex的最小下标索引值(如果不存在则e68a84e8a2ad3231313335323631343130323136353331333337396334返回-1)

示例代码如下:

7992e30996fdc1b685be50332f1592d4.png

运行结果:

42d942fdae264c7f12b47a71b7e3f254.png

63b86ab811f96cf3fc0e146ead0053be.png

4df48d485e06c034e9191b24a843b0e6.png

代码:

import java.util.Scanner;

public class Test{

public static void main(String[] args){

Scanner in=new Scanner(System.in);

System.out.print("请输入字符串:");

String s=in.nextLine();

System.out.print("请输入需要计数的字符:");

String s1=in.nextLine();

char c=s1.charAt(0);//c为需要计数的字符

int i,index=-1,count=0;

for(i=0;i

if((s.indexOf(c,index+1))!=-1){

index=s.indexOf(c,index+1);

count++;

}

if(count==0)

System.out.println("字符串"+s+"中没有"+c);

else

if(c==' ')

System.out.println("字符串"+s+"中有"+count+"个空格键");

else

System.out.println("字符串"+s+"中有"+count+"个"+c);

}

}

Java,如果你想要找出两个字符串之间的相同部分,你可以使用`equals()`、`compareTo()`、或者`substring()`等方法结合循环来实现。以下是几种常见的方法: 1. **暴力匹配** (不推荐,效率低): ```java public String findCommon(String str1, String str2) { int maxLength = Math.min(str1.length(), str2.length()); for (int i = 0; i < maxLength; i++) { if (str1.charAt(i) == str2.charAt(i)) { return str1.substring(0, i + 1); } } return ""; } ``` 这个方法逐个比较字符,一旦到不相同的,就返回已比较的部分。 2. **使用StringBuilder和indexOf()**: ```java public String findCommon(String str1, String str2) { StringBuilder common = new StringBuilder(); int index1 = 0, index2 = 0; while ((index1 = str1.indexOf(str2.substring(index2), index1 + 1)) != -1) { common.append(str2.substring(index2, index1)); index2 = index1 + 1; } if (index2 < str2.length()) { common.append(str2.substring(index2)); // 如果str2剩余部分与str1相等,则添加 } return common.toString(); } ``` 这种方法使用了`indexOf()`函数查公共部分,并不断更新索引。 3. **使用HashMap存储频率统计** (更高效): ```java Map<Character, Integer> charCount1 = getCharacterFrequency(str1); Map<Character, Integer> charCount2 = getCharacterFrequency(str2); String common = ""; for (char c : charCount1.keySet()) { if (charCount2.containsKey(c) && charCount1.get(c) == charCount2.get(c)) { common += c; } } return common; private Map<Character, Integer> getCharacterFrequency(String str) { Map<Character, Integer> count = new HashMap<>(); for (char c : str.toCharArray()) { count.put(c, count.getOrDefault(c, 0) + 1); } return count; } ``` 这里先计算每个字符串每个字符的频率,然后比较它们是否相等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值