Java-数据结构-char[ ] 和String的转换
·
1.String类的toCharArray()方法,将字符串转为字符(char)数组
2.String类的valueOf()方法,将字符(char)数组转换为字符串
要注意的是toCharArray()还是比较拖时间的方法,能不用就不用,在leetcode实战种第二个例子很好的说明这一点。
3. leetcode实战
给你一个字符串 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);
}
}
给定一个非空字符串 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/
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)