调用别人网站的数据库,企业网站建设最新技术,房地产图文制作网站,如何对一个网站做性能题目引用 反转字符串反转字符串II替换数字
1.反转字符串 编写一个函数#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1 输入s [“h”,“e”,“l”,“l”,“o”] 输出[“o”,“l”,“l”,“e”,“h”] 示例 2 输入s [“H”,“a”,“n”,“n”,“a”,“h”] 输出[“h”,“a”,“n”,“n”,“a”,“H”] 相信不少同学看到题目之后就已经想到了C的库函数reverse了用这个做当然可以毕竟只要做出来怎么快怎么来。但是我们还是来看看怎么不用库函数解决这道问题吧。 首先定义一个头指针i尾指针j不断循环交换i和j位置的值并且缩小区间当i≮ j时循环结束字符串也被反转了。 来看代码
void reverseString(vectorchar s) {for(int i0,js.size()-1;ij;i,j--){swap(s[i],s[j]);}}短短的也很可爱哦~
2.反转字符串II 给定一个字符串 s 和一个整数 k从字符串开头算起每计数至 2k 个字符就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个则反转前 k 个字符其余字符保持原样。 示例 1 输入s “abcdefg”, k 2 输出“bacdfeg” 示例 2 输入s “abcd”, k 2 输出“bacd” 这里的题目写的比较生硬容易让人看不懂。我们自己来分析一下吧我们需要根据题目给出的k来寻找反转的区间我们每次走2* k个位置然后判断剩下的位置够不够k个所以我们是以后面元素的个数来判断对后面n-i*(2*k)个位置是什么样的操作。 也就是说我们每次走2* k个位置如果后面的元素个数k那么我们就反转后面k个如果不够k个就全部反转。 那么就来看代码吧
string reverseStr(string s, int k) {for(int i0;is.size();i(2*k)){if((ik)s.size()){reverse(s.begin()i,s.begin()ik);}else{reverse(s.begin()i,s.end());}}return s;}3.替换数字 题目描述 给定一个字符串 s它包含小写字母和数字字符请编写一个函数将字符串中的字母字符保持不变而将每个数字字符替换为number。 例如对于输入字符串 “a1b2c3”函数应该将其转换为 “anumberbnumbercnumber”。 输入描述 输入一个字符串 s,s 仅包含小写字母和数字字符。 输出描述 打印一个新的字符串其中每个数字字符都被替换为了number 输入示例 a1b2c3 输出示例 anumberbnumbercnumber 这道题目就稍微有一点难度了不仅因为是IO机制而且需要我们对字符串这个类有一定的理解。C里面的string是可以使用resize修改空间的我们先用sOldIndex记录一下现在字符串的最后一位遍历一遍字符串用count记录字符串中数字的个数再利用resize将空间修改为5*counts.size()用sNewIndex指针标记现在字符串的最后一位然后从后向前遍历sOldIndex先走当遇到非数字时就将其赋值给sNewIndex位置并让sNewIndex--当遇到数字时sNewIndex--并把number倒序放入字符串中当sNewIndex0时循环结束。 来看代码
#include iostream
using namespace std;
int main() {string s;while (cin s) {int sOldIndex s.size() - 1;int count 0; // 统计数字的个数for (int i 0; i s.size(); i) {if (s[i] 0 s[i] 9) {count;}}// 扩充字符串s的大小也就是将每个数字替换成number之后的大小s.resize(s.size() count * 5);int sNewIndex s.size() - 1;// 从后往前将数字替换为numberwhile (sOldIndex 0) {if (s[sOldIndex] 0 s[sOldIndex] 9) {s[sNewIndex--] r;s[sNewIndex--] e;s[sNewIndex--] b;s[sNewIndex--] m;s[sNewIndex--] u;s[sNewIndex--] n;} else {s[sNewIndex--] s[sOldIndex];}sOldIndex--;}cout s endl; }
}总结 今天的题目呢难度并不大主要是熟悉字符串的各种操作那么今天就到这里吧大家天天开心~