File tree Expand file tree Collapse file tree 4 files changed +128
-0
lines changed Expand file tree Collapse file tree 4 files changed +128
-0
lines changed Original file line number Diff line number Diff line change @@ -124,6 +124,44 @@ var lengthOfLongestSubstring = function (s) {
124124};
125125```
126126
127+ ### ** C++**
128+
129+ ``` cpp
130+ class Solution {
131+ public:
132+ int lengthOfLongestSubstring(string s) {
133+ int arr[ 1024] ; // 本题的用例中,有不为小写字母的情况
134+ for (int i = 0; i < 1024; i++) {
135+ arr[ i] = -1;
136+ }
137+
138+ int curLen = 0;
139+ int maxLen = 0;
140+
141+ int len = s.size();
142+ for (int i = 0; i < len; i++) {
143+ int prev = arr[int(s[i])]; // 之前位置的index
144+ if (prev < 0 || i - prev > curLen) {
145+ // 其中,prev>0表示之前没有遇到过该字符
146+ // i - prev > curLen 表示之前遇到的当前字符,远超当前限定的范围
147+ // 这两种情况下,都是直接继续加就可以了
148+ curLen++;
149+ } else {
150+ if (curLen > maxLen) {
151+ maxLen = curLen;
152+ }
153+ curLen = i - prev; // curLen重新开始计数
154+ }
155+
156+ arr[int (s[i])] = i;
157+ }
158+
159+ return maxLen > curLen ? maxLen : curLen;
160+ }
161+ };
162+
163+ ```
164+
127165### ** ...**
128166
129167```
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ int lengthOfLongestSubstring (string s) {
4+ int arr[1024 ]; // 本题的用例中,有不为小写字母的情况
5+ for (int i = 0 ; i < 1024 ; i++) {
6+ arr[i] = -1 ;
7+ }
8+
9+ int curLen = 0 ;
10+ int maxLen = 0 ;
11+
12+ int len = s.size ();
13+ for (int i = 0 ; i < len; i++) {
14+ int prev = arr[int (s[i])]; // 之前位置的index
15+ if (prev < 0 || i - prev > curLen) {
16+ // 其中,prev>0表示之前没有遇到过该字符
17+ // i - prev > curLen 表示之前遇到的当前字符,远超当前限定的范围
18+ // 这两种情况下,都是直接继续加就可以了
19+ curLen++;
20+ } else {
21+ if (curLen > maxLen) {
22+ maxLen = curLen;
23+ }
24+ curLen = i - prev; // curLen重新开始计数
25+ }
26+
27+ arr[int (s[i])] = i;
28+ }
29+
30+ return maxLen > curLen ? maxLen : curLen;
31+ }
32+ };
Original file line number Diff line number Diff line change @@ -110,6 +110,38 @@ var isStraight = function (nums) {
110110};
111111```
112112
113+ ### ** C++**
114+
115+ ``` cpp
116+ class Solution {
117+ public:
118+ bool isStraight(vector<int >& nums) {
119+ if (nums.size() != 5) {
120+ return false;
121+ }
122+
123+ std::sort(nums.begin(), nums.end());
124+ int zeroNum = 0;
125+ for (int i = 0; i < nums.size(); i++) {
126+ if (nums[i] != 0) {
127+ // 这题的用例中,会出现超过两个0的情况
128+ break;
129+ }
130+ zeroNum++;
131+ }
132+
133+ for (int i = zeroNum; i < nums.size()-1 ; i++) {
134+ if (nums[i] == nums[i+1]) {
135+ return false;
136+ }
137+ }
138+
139+ return nums[4] - nums[zeroNum] <= 4;
140+ }
141+ };
142+
143+ ```
144+
113145### ** ...**
114146
115147```
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ bool isStraight (vector<int >& nums) {
4+ if (nums.size () != 5 ) {
5+ return false ;
6+ }
7+
8+ std::sort (nums.begin (), nums.end ());
9+ int zeroNum = 0 ;
10+ for (int i = 0 ; i < nums.size (); i++) {
11+ if (nums[i] != 0 ) {
12+ // 这题的用例中,会出现超过两个0的情况
13+ break ;
14+ }
15+ zeroNum++;
16+ }
17+
18+ for (int i = zeroNum; i < nums.size ()-1 ; i++) {
19+ if (nums[i] == nums[i+1 ]) {
20+ return false ;
21+ }
22+ }
23+
24+ return nums[4 ] - nums[zeroNum] <= 4 ;
25+ }
26+ };
You can’t perform that action at this time.
0 commit comments