代码随想录刷题Day23

右旋字符串

这道题是比较常规的对字符串的复制操作,找到右旋部分的分界点是关键

代码直接贴出来:

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;
    }
};

今天有些疲惫,做的简单字符串操作题,没有太多思考,后续补上

相关推荐
毅手札2 年前
字符串常见算法整理
字符串算法·算法优化