当前位置:   article > 正文

leetcode刷题记录_leedcode怎么清空刷题记录

leedcode怎么清空刷题记录

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;
  • 1
  • 2
  • 3
  • 4
  • 5

运行结果: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;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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

public:
    typedef long long LL;
private:
    stack<LL> st; //栈用来记录当前值与最小值的差值 diff
    LL minNum; //始终用来更新最小值
/*入栈时的差值:指的是当前值与当前最小值的差值  之后再更新最小值*/
//注意上述逻辑
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/117370
推荐阅读
相关标签
  

闽ICP备14008679号