题目来源
我的题解
方法一 双指针
利用两个指针,分别之前字符串左边和右边,然后分别对比两个指针指向字符的大小,选择小的一个作为最终结果中两个指针位置的结果。
具体步骤:
- 如果它们指向的字母相同,我们无需进行任何操作。当两个指针指向同一个位置时,也属于这一种情况;
- 如果它们指向的字母不同,由于需要尽可能少的操作,我们会把其中一个字母修改成与另一个字母相同。对于这一次操作,我们需要让最终字符串的字典序最小,因此我们应当贪心地将字典序较大的字母改成与字典序较小的字母相同。
时间复杂度:O(n/2),其中n为字符串的长度
空间复杂度:O(n) ,其中n为字符串的长度
int left=0,right=s.length()-1;
char[] ch=new char[s.length()];
while(left<=right){
char ch1=s.charAt(left);
char ch2=s.charAt(right);
if(ch1<ch2){
ch[left]=ch1;
ch[right]=ch1;
}else{
ch[left]=ch2;
ch[right]=ch2;
}
left++;
right--;
}
return new String(ch);
不好意思前两天忙,没有及时更新
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~