Java题解 | #字符串变形# 字符串数组原地修改
字符串变形
https://www.nowcoder.com/practice/c3120c1c1bc44ad986259c0cf0f0b80e
import java.util.*;
public class Solution {
// 字符串数组翻转函数
public void reverseArr(char[] arr, int i, int j) {
// 双指针左右滑动
int left = i;
int right = j;
while(left<right) {
char temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
public String trans(String s, int n) {
// 字符串数组原地修改
char[] str = s.toCharArray();
// 遍历更新:大写变小写、小写变大写、空值则不做处理
for(int i=0; i<n; i++) {
char element = str[i];
if(element>='A' && element<='Z') str[i] = (char)(element-'A'+'a');
else if(element>='a' && element<='z') str[i] = (char)(element-'a'+'A');
}
// 先整体翻转
reverseArr(str, 0, n-1);
// 此时每个单词也逆序了,需要根据空格将每个单元重新反转回去
for(int i=0; i<n; i++) {
if(str[i]==' ') continue;
// 双指针,左指针的单词起始位置,右指针为单词末后一个位置
int j=i;
while(j<n && str[j]!=' ') j++;
reverseArr(str, i, j-1);
i=j; // 更新左边界值
}
return new String(str);
}
}
查看1道真题和解析
腾讯成长空间 6021人发布