美文网首页
2019-01-31第六天

2019-01-31第六天

作者: 织雾呀 | 来源:发表于2019-01-31 12:05 被阅读0次

LeetCode:

密钥格式化

我的解法:

    public static String licenseKeyFormatting(String S, int K) {
        String s = S.replaceAll("-", "").toUpperCase();
        char[] sChars = s.toCharArray();
        String retStr = "";
        int j=0;
        for (int i = sChars.length-1; i >=0; i--) {
            if(j<K) {
                retStr=sChars[i]+retStr;
                j++;
            }else {
                retStr="-"+retStr;
                j=0;
                i+=1;
            }
        }
        return retStr;
    }

但是这样的效率不高,在执行上给出的时间是:


在浏览了评论区发现有更高效的解法

    public String licenseKeyFormatting(String S, int K) {
        S = S.toUpperCase().replace("-", "");
        StringBuilder sb = new StringBuilder(S);
        int len = sb.length();
        for (int i = K; i < len; i += K)
            sb.insert(len - i, '-');
        return sb.toString();
    }

相比之下,这种比我那个好很多


然后还有一种,更快:

    public String licenseKeyFormatting(String S, int K) {
        char[] chars = S.toUpperCase().toCharArray();
        StringBuilder sb = new StringBuilder();
        int count = 0;
        for (int i = chars.length - 1; i >= 0; i--) {
            if (chars[i]=='-')
                continue;
            if (count%(K)==0&&count!=0){
                sb.append('-');
            }
            count++;
            sb.append(chars[i]);

        }
        return sb.reverse().toString();
    }

执行用时:


所以在操作巨多的字符串的时候用StringBuffer和StringBuilder会大大提高执行效率;

相关文章

网友评论

      本文标题:2019-01-31第六天

      本文链接:https://www.haomeiwen.com/subject/tcyksqtx.html