用下列代码解决541. 反转字符串 II
string reverseStr(string s, int k) {
for(int i=0;i<s.size();i+=2*k){
reverse(s.begin()+i,s.begin()+min(i+k,s.size()));
}
return s;
}
报错说找不到min()方法:
Line 5: Char 43: error: no matching function for call to 'min'
reverse(s.begin()+i,s.begin()+min(i+k,s.size()));
^~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/algorithmfwd.h:383:5: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('int' vs. 'unsigned long')
min(const _Tp&, const _Tp&);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_algo.h:3450:5: note: candidate template ignored: could not match 'initializer_list<type-parameter-0-0>' against 'int'
min(initializer_list<_Tp> __l, _Compare __comp)
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_algo.h:3444:5: note: candidate function template not viable: requires single argument '__l', but 2 arguments were provided
min(initializer_list<_Tp> __l)
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/algorithmfwd.h:388:5: note: candidate function template not viable: requires 3 arguments, but 2 were provided
min(const _Tp&, const _Tp&, _Compare);
^
1 error generated.
但是把s.size()单独dia出来定义一个参数就好了。
string reverseStr(string s, int k) {
int n=s.size();
for(int i=0;i<s.size();i+=2*k){
reverse(s.begin()+i,s.begin()+min(i+k,n));
}
return s;
}
这是为什么?