字符串

对应练习题:力扣平台

14. 最长公共前缀

cpp 复制代码
class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string strs1=strs[0];//初始前缀字符串
        for (int i = 1; i < strs.size(); i++) {
            while(strs[i].find(strs1)!=0)//遍历找到共同最长前缀字符串
            {
                strs1=strs1.substr(0,strs1.size()-1);
                if(strs1.empty())//为空返回真
                {
                    return "";
                }
            }
        }
        return strs1;
    }
};

2288.价格减免

cpp 复制代码
class Solution {
public:
    string discountPrices(string sentence, int discount) {
        stringstream sin(sentence),sout;//构造函数
        sout<<fixed<<setprecision(2);//实现两位保存,非四舍五入
        vector<string>words;
        string word;
        while(sin>>word)
        {
            if(word[0]=='$'&&word.size()>1&&all_of(word.begin()+1,word.end(),::isdigit))//判断数字来实现是否到完整单个价格
            {
                double price = stoll(word.substr(1,word.size()-1))*(1.0-discount/100.0);
                sout<<'$'<<price;
            }
            else
            {
                sout<<word;//转变后的
            }
            sout<<" ";
        }
        string ans = sout.str();
        ans.pop_back();
        return ans;
    }
};

1.(解决最长公共前缀问题)find()函数:查找是否存在相同字串 并会返回出现的头位置
2.substr()函数:取子串
// 当某个字符串不以当前前缀开头时,缩短前缀直到找到最长公共前缀
while (strsi.find(prefix) != 0)
{
prefix = prefix.substr(0, prefix.length() - 1);
// 如果前缀为空,表示没有公共前缀,直接返回空字符串
if (prefix.empty())
{
return "";
}
}

3.replace()函数:替换字符
位置得指定,第一个参数是待替换的起始位置,第二个参数是待替换的长度,第三个替换的字符串

4.insert()函数:插入字符 补零情况 str.insert(0, 4, '0');

5.end():最后一个元素的下一个元素,用于检查字符串到末尾

6.字符串流 istringstream ss(字符串)+(ss >> )分割
vector<string> words;
istringstream ss(s); // 使用字符串流来分割字符串
string word;

// 将字符串 s 按照空格分割成单词
while (ss >> word) {
words.push_back(word);
}
7.字符串保留位数,非四舍五入 (sin,sout是构造函数,转换为字符流 类似cin,cout)
getline(cin,s);
stringstream sin(s), sout;
sout << fixed << setprecision(2);
vector<string> words;
string word;
while (sin >> word) {
//all_of()函数会对范围内的每个元素调用谓词函数,如果所有元素都满足谓词函数定义的条件,则返回 true,否则返回 false
if (word0 == '' \&\& word.size() \> 1 \&\& all_of(word.begin() + 1, word.end(), ::isdigit)) { double price = stoll(word.substr(1, word.size() - 1)) \* (1.0 - discount / 100.0); sout \<\< '' << price;
}
else {
sout << word;
}
sout << " ";
}
string ans = sout.str();//获取字符串流方式
ans.pop_back();
return ans;

相关推荐
http阿拉丁神猫2 小时前
Go语言入门笔记:从基础到开发环境搭建(二)
开发语言·笔记·golang
不会就选b3 小时前
C++补充部分(一)--lambda 表达式
开发语言·c++
czhc11400756633 小时前
同值短路与单一真值源:属性不是命令,状态只有一个家
c#
Pniubi6 小时前
HashMap的扩容和树化边界
java·开发语言
gCode Teacher 格码致知8 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
发量惊人的中年网工8 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
下页、再停留8 小时前
【C#桌面客户端系列学习-15】生成可视化图表之折线图、柱状图、饼状图
开发语言·c#
ShineWinsu8 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
益莱储中国10 小时前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
benchmark_cc11 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash