每日一题 0202

(2022.02.02)每日一题 反转单词前缀

简单的题,第一想法双指针模拟。

一个指针去查找字符串中的字符,另一个指针始终指向字符串首,当查找指针找到后,通过交换两个指针指向的字符,并且指针范围收缩,直至右指针小于左指针退出循环。

class Solution {
public:
    string reversePrefix(string word, char ch) {
        char* pfinder = &word[0];
        char* pchanger = &word[0];
        //通过ASCII码是否相同来判断是否是同一个字母
        while((*pfinder - ch )!=0){
            //根据字符串结尾都会由\0表示结尾,来判断字符串中不存在字符。
            if(*pfinder == '\0'){
                return word;
            }
            ++pfinder;
        }
        //简单的交换
        while(pfinder > pchanger){
            char temp = *pfinder;
            *pfinder = *pchanger;
            *pchanger = temp;
            --pfinder;
            ++pchanger;
        }
        return word;
    }
};



//official
class Solution {
public:
    string reversePrefix(string word, char ch) {
        int index = word.find(ch);
        //string::npos是一个特殊值,用于匹配没有查找到的结果,即说明查找没有匹配的结果。
        if (index != string::npos) {
            //reverse反转[begin,last)范围内的字符串
            reverse(word.begin(), word.begin() + index + 1);
        }
        return word;
    }
};

上一篇:ebs 二次开发 触发器


下一篇:在Oracle公有云中2小时供应EBS环境