【问题标题】:Strings and StringBuffer字符串和字符串缓冲区
【发布时间】:2017-12-23 18:16:03
【问题描述】:

我有一个方法,我想返回一个字符串的路径 例如,如果我输入:xxdrrryy - 它应该返回 rrr,我只能返回一个长度为 3 的字符串,所以我正在尝试这个,但我被跟踪了。它必须是一个字母连续出现 3 次

public String countTriple(String str) {
    int count = 1;
    char currChar = str.charAt(0);
    for(int i=1; i<str.length(); i++) {
        if(currChar == str.charAt(i)) {
            count++;
            if(count == 3) {
                StringBuilder sb = new StringBuilder("");
                for(int j=0; j<3;j++) {
                    sb.append(currChar);
                }
                return sb.toString();
            }
        }
        else {
            count = 1;
        }
        currChar = str.charAt(i);
    }
    return null; //no triple found
}

【问题讨论】:

  • 你应该在这里搜索一下
  • 试试我的答案。它正在工作。本来有个小bug,现在好了。
  • 是的,我现在要@Shn_Android_Dev
  • 如果有多个匹配项,例如aaabcccdeee,您是只想要aaa 还是全部aaa, ccc, eee
  • 是的,没有想到这种情况,我正在检查一次,但这是一个很好的建议@YCF_L

标签: java string stringbuffer


【解决方案1】:

除非您有特定的理由不这样做,否则我建议您使用正则表达式。

这样的就够了

Pattern p = Pattern.compile("(\\w)\\1\\1");
Matcher m = p.matcher("abbccc");
if(m.find()){
    System.out.println(m.group());
}

只需导入java.util.regex.*

【讨论】:

  • 是的,谢谢@Frank Underwood,我可以投票取消禁令吗?
  • @valik 如果可行,我建议接受并支持它
【解决方案2】:

请更新您的描述,很难理解您要说的内容。 但据我了解,您想找出字符串中特定字符的计数。 假设您输入“aabbbcccc”,那么它应该返回 c 有 4 个字符或类似的东西。

如果是这种情况,则简单遍历该字符串中的每个字符并将它们添加到 HashTable 中,并在每次找到字符时增加计数,并返回您需要的值。

希望对你有所帮助。

【讨论】:

  • 如果你输入 aabbbcccc 它应该返回 bbb 因为规则是 cccc 有四次出现并且它应该最多出现三次并且不少于@Ankit Kumar Singh
  • 这很容易。您只需要为此添加一个检查。
  • 是的,我现在正在尝试 @Ankit Kumar Singh 我可以投票取消禁令吗?
  • 由于某种原因它没有返回值@Ankit Kumar Singh
【解决方案3】:

此代码有效。试试这个:

public static String countTriple(String str) {

    int count = 1;
    char currChar = str.charAt(0);
    for(int i=1; i<str.length(); i++) {
        if(currChar == str.charAt(i)) {
            count++;
            if(count == 3) {
                StringBuilder sb = new StringBuilder("");
                for(int j=0; j<3;j++) {
                    sb.append(currChar);
                }
                return sb.toString();
            }
        }
        else {
            count = 1;
        }
        currChar = str.charAt(i);
    }
    return null; //no triple found
}

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    相关资源
    最近更新 更多