publicStringconvert(String s,int numRows){if(numRows ==1){return s;}int len = s.length();int d =2* numRows -2;StringBuffer ret =newStringBuffer();for(int i =0; i < len; i += d){ret.append(s.charAt(i));}for(int k =1; k < numRows -1; k++){for(int i = k, j = d - i; i < len || j < len; i += d, j += d){if(i < len){ret.append(s.charAt(i));}if(j < len){ret.append(s.charAt(j));}}}for(int i = numRows -1; i < len; i += d){ret.append(s.charAt(i));}return ret.toString();}
二. 力扣38. 外观数列
1. 题目
2. 算法原理
3. 代码
publicStringcountAndSay(int n){String ret ="1";for(int i =1; i < n; i++){StringBuilder ss =newStringBuilder();int left =0;int right =0;int len = ret.length();while(left < len && right < len){while(left < len && right < len && ret.charAt(right)== ret.charAt(left)){right++;}ss.append(Integer.toString(right - left));ss.append(ret.charAt(left));left = right;}ret = ss.toString();}return ret;}
三. 力扣495. 提莫攻击
1. 题目
2. 算法原理
3. 代码
publicintfindPoisonedDuration(int[] timeSeries,int duration){int ret =0;for(int i =1; i < timeSeries.length; i++){int tmp = timeSeries[i]- timeSeries[i -1];if(tmp >= duration){ret += duration;}else{ret += tmp;}}ret += duration;return ret;}
publicintminNumberOfFrogs(String croakOfFrogs){char[] c = croakOfFrogs.toCharArray();String s ="croak";int n = s.length();int[] hash =newint[n];HashMap<Character,Integer> map =newHashMap<>();for(int i =0; i < n; i++){map.put(s.charAt(i),i);// 哈希表中让哈希值key与下标value对应}for(char ch : c){int index = map.get(ch);if(index ==0){if(hash[n -1]!=0){hash[n -1]--;}hash[index]++;}else{if(hash[index -1]!=0){hash[index -1]--;hash[index]++;}else{return-1;}}}for(int i =0; i < n -1; i++){if(hash[i]!=0){return-1;}}return hash[n -1];}