承接上文:Java-数据结构-字符串专题<一>
一. 字符串的简单介绍
见Java-数据结构-字符串专题<一>
二. 围绕字符串相关的转换
见Java-数据结构-字符串专题<一>
三. Leetcode&&Nowcoder实战
1~5 见Java-数据结构-字符串专题<一>
6. leeetcode344 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出,不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
输入:s = ["h","e","l","l","o"]
输出:["o","l","l","e","h"]
class Solution {
public void reverseString(char[] s) {
int left = 0;
int right = s.length-1;
while(left < right){
char c = s[left];
s[left] = s[right];
s[right] = c;
left++;
right--;
}
}
}
7. leeetcode541 反转字符串II
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
输入:s = "abcdefg", k = 2
输出:"bacdfeg"
class Solution {
public static String reverseStr(String s, int k) {
int cur = 0;
int len = s.length();
String res = "";
while(cur < len){
int diff = len - cur;
if(diff < k){
char[] ch = s.substring(cur,len).toCharArray();
String temp = String.valueOf(reverseString(ch));
res += temp;
break;
}
else if(diff >= k && diff < 2*k){
char[] ch = s.substring(cur,cur+k).toCharArray();
String temp = String.valueOf(reverseString(ch));
res += temp;
res += s.substring(cur+k,len);
break;
}
else{
char[] ch = s.substring(cur,cur+k).toCharArray();
String temp = String.valueOf(reverseString(ch));
res += temp;
res += s.substring(cur+k,cur+2*k);
cur += 2*k;
}
}
return res;
}
public static char[] reverseString(char[] s) {
int left = 0;
int right = s.length-1;
while(left < right){
char c = s[left];
s[left]