Leetcode Practice -- 字符串

科技资讯 投稿 11800 0 评论

Leetcode Practice -- 字符串

目录
    14. 最长公共前缀
    • 思路解析
  • 151. 反转字符串中的单词
      思路解析
  • 125. 验证回文串
      思路解析
  • 415. 字符串相加
      思路解析
  • 3. 无重复字符的最长子串
      思路解析
  • 8. 字符串转换整数 (atoi
      思路解析

14. 最长公共前缀

如果不存在公共前缀,返回空字符串 ""

输入:strs = ["flower","flow","flight"]
输出:"fl"

    思路解析

string longestCommonPrefix(vector<string>& strs {
    string res;
    if (strs.empty( {
        return res;
    }
    for (size_t i = 0; i < strs[0].length(; i++ {
        char pivotChar = strs[0][i];
        for (size_t j = 1; j < strs.size(; j++ {
            if (i >= strs[j].length( || strs[j][i] != pivotChar {
                return res;
            }
        }
        res += pivotChar;
    }
    return res;
}

151. 反转字符串中的单词

给你一个字符串 s,请你反转字符串中 单词 的顺序。

返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。

输入:s = "the sky is blue"
输出:"blue is sky the"

    思路解析

string reverseWords(string s {
    stack<string> strStack;
    string oneWord;
    for (size_t i = 0; i < s.length(; i++ {
        if (s[i] == ' ' {
            if (!oneWord.empty( {
                strStack.emplace(oneWord;
            }
            oneWord.clear(;
            continue;
        }
        oneWord += s[i];
    }
    if (!oneWord.empty( {
        strStack.emplace(oneWord;
    }
    string resStr;
    while (!strStack.empty( {
        resStr += strStack.top( + " ";
        strStack.pop(;
    }
    resStr = resStr.substr(0, resStr.length(-1;
    return resStr;
}
graph LR; ios-->ios_base; istringstream-->istream; istream-->ios; ostream-->ios; ostringstream-->ostream;
    istream:从流中读取
  • ostream:写到流中去
  • istringstream:从string对象流中读取
  • ostringstream:写入到string对象流中

ostringstream:

Objects of this class use a string buffer that contains a sequence of characters. This sequence of characters can be accessed directly as a string object, using member str。

istringstream:

>> applied to an input stream is known as extraction operator. It is overloaded as a member function for:

>>,即为提取操作符,有三种接受方式:

    arithmetic types【算术类型,bool、short、long等等】
  • stream buffers
  • manipulators

>>可以从流中提取数据,多个单词使用空格分割。

string reverseWords(string s {
    istringstream is(s;
    stack<string> strStack;
    string str;
    while (is >> str {
        strStack.emplace(str;
    }
    string resStr;
    while (!strStack.empty( {
        resStr += strStack.top( + " ";
        strStack.pop(;
    }
    resStr = resStr.substr(0, resStr.length( - 1;
    return resStr;
}

125. 验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

给你一个字符串 s,如果它是 回文串,返回 true ;否则,返回 false 。

    思路解析

bool isPalindrome(string s {
    // 清理字符串
    string cleanStr;
    for (size_t i = 0; i < s.length(; i++ {
        if (isalnum(s[i] {
            cleanStr += tolower(s[i];
        }
    }
    // 判断其是否为回文串
    int i = 0;
    int j = cleanStr.length( - 1;
    while (i < j {
        if (cleanStr[i++] != cleanStr[j--] {
            return false;
        }
    }
    return true;
}

C++中哪些字符串的判断与处理函数:

编程笔记 » Leetcode Practice -- 字符串

赞同 (64) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽