右旋字符串
这道题是比较常规的对字符串的复制操作,找到右旋部分的分界点是关键
代码直接贴出来:
cpp
#include<stdio.h>
#include<string.h>
int main(){
int k;
char s[10000];
scanf("%d %s",&k,s);
int cnt = 0;
for(int i = strlen(s) - k;i<strlen(s);i++){
printf("%c",s[i]);
}
for(int i = 0;i<strlen(s)-k;i++){
printf("%c",s[i]);
}
return 0;
}
如果原地操作的话,可以使用reverse函数对字符串三次逆转操作:整个字符数组的字符逆转、两段字符数组的逆转。
实现strStr()
从一个给定的字符串中找目标字符串,并返回出现的下标。我是直接按照字面意思,去查找。还没有去回顾使用KMP算法如何去设计这个算法。代码如下:
cpp
class Solution {
public:
int strStr(string haystack, string needle) {
int index = -1;
for(int i = 0;i< haystack.size();i++){
if(haystack[i]== needle[0]){
int j = i,k = 0;
for(j = i,k = 0;j<haystack.size()&&k<needle.size()&&haystack[j]==needle[k];j++,k++);
if(k==needle.size()){
index = i;
break;
}
}
}
return index;
}
};
今天有些疲惫,做的简单字符串操作题,没有太多思考,后续补上