1.String类的toCharArray()方法,将字符串转为字符(char)数组

2.String类的valueOf()方法,将字符(char)数组转换为字符串

要注意的是toCharArray()还是比较拖时间的方法,能不用就不用,在leetcode实战种第二个例子很好的说明这一点。

3. leetcode实战

1528. 重新排列字符串

给你一个字符串 s 和一个 长度相同 的整数数组 indices 。

请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。

返回重新排列后的字符串。

class Solution {
    public String restoreString(String s, int[] indices) {
        char[] ans = new char[indices.length];
        for(int i = 0 ; i < indices.length; i++){
            ans[indices[i]] = s.charAt(i); 
        }
        return String.valueOf(ans);
    }
}

剑指 Offer II 019. 最多删除一个字符得到回文

给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。

相比较上面的方法,下面的方法不进行toCharArray()转换,会节省1ms的时间,来到100%

class Solution {
  public static boolean validPalindrome(String s) {
        char[] ch = s.toCharArray();
        int len = ch.length;
        int i = 0;
        int j = len - 1;
        boolean flag = false;
        while (i < j - 1) {
            if (ch[i] != ch[j]) {
                if (!flag) {
                    while(ch[i + 1] == ch[j] && ch[i] == ch[j - 1]) {
                        i++;
                        j--;
                    }
                    if (ch[i + 1] == ch[j]) {
                        i++;
                        flag = true;
                        continue;
                    }
                    if(ch[i] == ch[j-1]){
                        j--;
                        flag = true;
                        continue;
                    }
                    return false;
                }
                else {
                    return false;
                }
            }
            i++;
            j--;
        }
        return true;
    } 
}

作者:forwardsummer
链接:https://leetcode-cn.com/problems/RQku0D/solution/java-100-shuang-zhi-zhen-by-forwardsumme-5sw4/
class Solution {
  public static boolean validPalindrome(String s) {
        int len = s.length();
        int i = 0;
        int j = len - 1;
        boolean flag = false;
        while (i < j - 1) {
            if (s.charAt(i) != s.charAt(j)) {
                if (!flag) {
                    while(s.charAt(i+1) == s.charAt(j) && s.charAt(i) == s.charAt(j-1)) {
                        i++;
                        j--;
                    }
                    if (s.charAt(i+1) == s.charAt(j)) {
                        i++;
                        flag = true;
                        continue;
                    }
                    if(s.charAt(i) == s.charAt(j-1)){
                        j--;
                        flag = true;
                        continue;
                    }
                    return false;
                }
                else {
                    return false;
                }
            }
            i++;
            j--;
        }
        return true;
    } 
}

作者:forwardsummer
链接:https://leetcode-cn.com/problems/RQku0D/solution/java-100-shuang-zhi-zhen-by-forwardsumme-5sw4/

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐