LeetCode 541. Reverse String II(C++版)
来源:互联网 发布:加入放心淘宝贝没打标 编辑:程序博客网 时间:2024/05/29 14:01
题目描述:
Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.
Example:
Input: s = "abcdefg", k = 2Output: "bacdfeg"Restrictions:
- The string consists of lower English letters only.
- Length of the given string and k will in the range [1, 10000]
思路分析:
把s按照2k长度为单位处理,最后再处理一个不足2k长度的。每一个2k长度中,得到两个k长度的子串,前k个反转,后k个不变,加入结果字符串s中。
代码:
class Solution {public: string reverseWord(string &s) { int len = s.length(); for(int i = 0; i < len/2; i ++) { char tmp = s[i]; s[i] = s[len-i-1]; s[len-1-i] = tmp; } return s; } string reverseStr(string s, int k) { if(k <= 1) return s; string res=""; int len = s.length(); int p = 2*k; //2k个字符为一组,每组中前k个需反转 int cnt = len / p; //一共有cnt个2k长度的字符串 int remaider = len % p; //最后剩下的一组,不足2k个字符 //先处理前cnt个2k长度的字符串 for(int i = 0; i < cnt; i ++) { string s1 = s.substr(p*i, k); string s2 = s.substr(p*i+k, k); reverseWord(s1); res += s1 + s2; } //处理剩下的一个不足2k的字符串 if(remaider <= k){ string s1 = s.substr(cnt*p); reverseWord(s1); res += s1; } else { string s1 = s.substr(cnt*p, k); string s2 = s.substr(cnt*p+k); reverseWord(s1); res += s1 + s2; } return res; }};
Runtime: 9 ms
阅读全文
1 0
- LeetCode 541:Reverse String II (c++)
- LeetCode 541. Reverse String II(C++版)
- leetcode 541. Reverse String II
- Leetcode-541. Reverse String II
- 【Leetcode】541. Reverse String II
- 541. Reverse String II LeetCode
- [LeetCode]541. Reverse String II
- LeetCode 541. Reverse String II
- LeetCode 541. Reverse String II
- leetcode-541. Reverse String II
- [leetcode]541. Reverse String II
- [leetcode]: 541. Reverse String II
- LeetCode:541. Reverse String II
- LeetCode 541. Reverse String II
- leetcode 541. Reverse String II
- leetcode#541. Reverse String II
- leetcode 541. Reverse String II
- LeetCode-541. Reverse String II
- 字符串问题---判断字符数组中是否所有的字符只出现了一次
- netfilter----filter机制
- hdu1251
- Yii2如何使用存取控制过滤器(ACF)
- [cocos2d-x]用getContentSize()返回的值用CCLOG打印必须用%f
- LeetCode 541. Reverse String II(C++版)
- 2017.8.18-------离散+逆序
- 入住CSDN
- Web中线程的理解
- zzuli2181-GJJ的日常之暴富梦-多校联萌(四)
- 关于javase中 instanceof的用法 为什么判读之后 还要进行强制类型转换
- 【多校训练】hdu 6140 Hybrid Crystals
- 在程序运行时申请权限
- GPU编程自学9 —— 原子操作