java - 如何找出某个字符是字符串中第一次、第二次还是第三次出现?

标签 java

如果我有一个像“telephone”这样的字符串,并且希望输出以 tel*phon* 的形式返回,我该怎么做?

程序将打印出字符串中的每个字母。如果这是第一次出现这封信,那么我会写它。但如果它再次出现,我会打印一个星号。

你好,就是 hel*o

再见就是再见

协调将是co*rdinat***(哎呀,你是对的)

请帮忙谢谢!这不是作业……这是期末考试的练习!谢谢!!

我正在尝试类似...但我只是不知道如何进一步...请帮助

Scanner keyboard = new Scanner(System.in);
String s;
int i, j, count;
System.out.print("Enter string: ");
s = keyboard.nextLine();



for(i=0; i < s.length(); i++){
   count = 0;
   for(j=i+1; i < s.length(); j++){
        if(s.charAt(i) == s.charAt(j)){
           count++;
        }
        if(count < 1)
           System.out.print(s.charAt(i));
        else
           System.out.print("*");
   }
}

有人告诉我发布我的代码,所以我现在就发布了。我将如何编辑这个确切的代码以使其工作?请帮忙:(

最佳答案

这里有一个方便的方法。 Setadd() 上有一个 boolean 属性,如果该值已插入到集合中,则返回 false。

方法:创建一个数据结构,以便您可以保证仅将唯一值插入其中。如果将唯一值插入其中,则可以继续构建返回字符串。如果没有,那么您需要生成星号。

引用下面的代码。为了保证对大写和小写字符的公正处理,请在 .toCharArray() 之前调用 toLowerCase()

public static String filterChars(final String word) {
    final Set<Character> set = new HashSet<>();

    final StringBuilder builder = new StringBuilder();
    for(Character c : word.toCharArray()) {
        if(set.add(c)) {
            builder.append(c);
        } else {
            builder.append('*');
        }
    }
    return builder.toString();
}

关于java - 如何找出某个字符是字符串中第一次、第二次还是第三次出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25149353/

相关文章:

java - 如何在Web上部署Web服务

java - JProgressBar 定位到窗口底部

java - 按 Lucene 词典中的用法对建议的单词进行排序

java - Spring /hibernate : Do you have to load entities to use it after saving?

java - Java lambda 可以有超过 1 个参数吗?

java - 带有数组名称的 playframework 表单输入

java - 如何在用户每次输入字符串值时自动生成整数值?

java - 通过java运行shell脚本

java - 移动小程序而不重新加载它

java - 向上导航按钮在没有自定义工具栏的基本 Android 应用程序中不起作用