344.反转字符串
题目:
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
代码:
class Solution {
public void reverseString(char[] s) {
int len = s.length;
int middle = (int) (len / 2.0 );
for(int i = 0; i < middle; i++){
char c = s[i];
s[i] = s[len-1-i] ;
s[len-1-i] = c;
}
}
}
541.反转字符串 II
题目:给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
- 如果剩余字符少于 k 个,则将剩余字符全部反转。
- 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
代码:
class Solution {
public String reverseStr(String s, int k) {
char[] cs = s.toCharArray();
int times = cs.length / (2 * k);
for(int i = 0; i < times; i++){
int start = i * 2 * k;
int end = start + k;
func(cs,start ,end);
}
int start = times * 2 * k;
int end = start + k;
if( cs.length % ( 2 * k ) < k){
end = start + cs.length % ( 2 * k );
}
func(cs,start ,end);
return new String(cs);
}
// 将字符串反转,反转下标start到end-1的范围
void func(char[] cs, int start ,int end){
int middle = (int) ( (end - start) / 2.0);
for( int j = 0; j < middle; j++){
char c = cs[ start + j];
cs[ start + j] = cs[ end - 1 - j];
cs[ end - 1 - j] = c;
}
}
}
标签:end,start,int,反转,代码,随想录,cs,字符串
From: https://www.cnblogs.com/qiuye98/p/programmercarl-string.html