leetcode刷题记录

c++分割字符串

c++ 利用stringstream和getline分割字符串,其中stringstream 是c++提供的串流。
首先了解c++中的输入输出流:
cin+流提取运算符>> 实现输入
cout + 流插入运算符<< 实现输出
定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据。
在执行cout语句时,先把插入的数据存放在输出缓冲区中,直到输出缓冲区满或遇到cout语句中的endl("\n",此时将缓冲区中已有的数据一起输出,并清空缓冲区。
cin从输入流中根据变量的类型提取相应长度的字节。
fstream…
stringstream–串流 #include

stringstream stream; //定义串流
int a,b;
stream<<"80"; //将一个字符串输出到串流里面
stream>>a; //根据变量类型从串流中提取相应长度的字节
cout<<a<<endl;

运行结果:80
注意:clear()重置流的标志状态 str()清空流的内存缓冲

stringstream stream; //定义串流
int a,b;
stream<<"80"; //将一个字符串输入到串流里面
stream>>a; //根据变量类型从串流中输出相应长度的字节
cout<<a<<endl;
//stringstream 重复使用时 需要清空
//stream.clear()清空标志位,并没有释放内存
//stream.str("") 释放stringstream的内存
//stream.str(const string& s) 将stringstream中的内容替换为s
stream<<"90";
stream>>b;
cout<<b<<endl;

getline()的原型是istream& getline ( istream &is , string &str , char delim );其中 istream &is 表示一个输入流,可用cin或stringstream,遇到字符delim停止读入

vector<string> split(string str, char del) {
	stringstream ss(str);
	string temp;
	vector<string> ret;
	while (getline(ss, temp, del)) {
		ret.push_back(temp);
	}
	return ret;
}
int main()
{
	string str_cin("one#two#three");
	vector<string> res= split(str_cin, '#');
	for (auto c : res)
		cout << c << endl;
	system("pause");
	return 0;
}

155:最小栈的实现
最容易想到的是借助最小值辅助栈实现
(1)辅助栈:和主栈同步(push pop)更新栈
(2)辅助栈:最小值变化时才push和pop
(3)不使用辅助栈:

public:
    typedef long long LL;
private:
    stack<LL> st; //栈用来记录当前值与最小值的差值 diff
    LL minNum; //始终用来更新最小值
/*入栈时的差值:指的是当前值与当前最小值的差值  之后再更新最小值*/
//注意上述逻辑
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值