766. Toeplitz Matrix

第一题不说,贼麻瓜,好久没以比赛的状态写题,这个题浪费了快40分钟,我真是。。。。。。

767. Reorganize String

就是给你一个字符串,能不能转换成:任意一个字符S[i],使得S[i-1]和S[i+1]都不等于S[i]。如果能输出,不能就输出一个空字符串。

大一的时候好像有印象,队友做出来的,贪心吧,如果遇到相邻两个一样的,就从后面找一个插到中间,具体原理我也不知道为什么,反正是对的,从头到尾扫一遍,再倒着来一遍,为什么要两边我也不知道,反正是对的。。。我也很凌乱啊!!!

 1 class Solution {
 2 public:
 3     string reorganizeString(string S) {
 4         int len = S.size();
 5         string ts = S;
 6         bool ans1 = true;
 7         for(int i=0;i<len;i++)
 8         {
 9             if(ts[i]==ts[i+1]) {
10                 if(i == len-2) ans1 = false;
11                 for(int j=i+2;j<len;j++)
12                 {
13                     if(ts[j]!=ts[i] && ts[j]!=ts[i+1])
14                     {
15                         swap(ts[j], ts[i+1]);
16                         break;
17                     }
18                     if(j == len-1) {
19                         ans1 = false;
20                     }
21                 }
22             }
23         }
24         string ts2 = ts;
25         reverse(ts2.begin(), ts2.end());
26         bool ans2 = true;
27         for(int i=0;i<len;i++)
28         {
29             if(ts2[i]==ts2[i+1]) {
30                 if(i == len-2) ans2 = false;
31                 for(int j=i+2;j<len;j++)
32                 {
33                     if(ts2[j]!=ts2[i] && ts2[j]!=ts2[i+1])
34                     {
35                         swap(ts2[j], ts2[i+1]);
36                         break;
37                     }
38                     if(j == len-1) {
39                         ans2 = false;
40                     }
41                 }
42             }
43         }
44         if(ans1){
45             return ts;
46         }
47         else if(ans2) {
48             return ts2;
49         }
50         else {
51             return "";
52         }
53     }
54 };
View Code

相关文章: