网易笔试的那道黑白橡皮泥反转的题有人做出来没,什么思路呢

网易笔试的那道黑白橡皮泥反转的题有人做出来没,什么思路呢#笔试题目##网易#
全部评论
package wangyi_qiuzhao; import java.util.Scanner; public class Main3 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String line = scanner.nextLine(); char[] arr = line.toCharArray(); int res = 0; for (int i = 1; i < line.length(); i++) { if (arr[i-1] == arr[i]) { reverse(arr, 0, i-1); reverse(arr, i, arr.length-1); } } int sum = 1; for (int i = 1; i < arr.length; i++) { if (arr[i-1] != arr[i]) { sum += 1; // System.out.println(sum); } else { sum = 1; } if (res < sum) { res = sum; } } System.out.println(res); } public static void reverse(char[] arr, int start, int end) { while (start < end) { char temp = arr[end]; arr[end] = arr[start]; arr[start] = temp; start++; end--; } } }
点赞 回复 分享
发布于 2018-09-08 19:39
就是求s+s的最长黑白子串
点赞 回复 分享
发布于 2018-09-08 19:33
就是两个子串相加然后求最长黑白子串,但是我牛客网没用过,写完了之后死活过不去,基本凉凉
点赞 回复 分享
发布于 2018-09-12 20:38
当成一个环来做就可以。环本身不会发生变化。
点赞 回复 分享
发布于 2018-09-10 20:25
你手撕123456一下就会发现,不管你怎么翻转,结果都是按序的,差别只在于倒序还是顺序 所以结果就是s+s,统计黑白相间个数
点赞 回复 分享
发布于 2018-09-10 19:36
其他几题是什么来着 还有印象吗
点赞 回复 分享
发布于 2018-09-10 17:35
    void reverseString(string &str, int left, int right) {         int i = left;         int j = right;         while (i < j) {             swap(str[i], str[j]);             i++;             j--;         }     }     int getSubStringLen(string & str)     {         if (str.size() <= 1)             return str.size();         vector<int> v(str.size(), 0);//v[i]表示以str[i]结尾的最长黑白相间长度         v[0] = 1;         for (int i = 1; i < str.size(); i++)         {             if (str[i] != str[i - 1])//若不相等,一直向下查找                 v[i] = v[i - 1] + 1;             else             {                 if (str[i] == str[str.size() - 1] && str[i] == str[0])//当前节点与首节点和尾节点均相等则翻转后也不会改变长度                     v[i] = 1;                 else //翻转                 {                     reverseString(str, i, str.size() - 1);                     reverseString(str, 0, i - 1);                     v[i] = v[i - 1] + 1;                 }             }         }         int min = 0;         for (int i = 0; i < v.size(); i++)         {             if (v[i] > min)                 min = v[i];         }         return min;     }
点赞 回复 分享
发布于 2018-09-08 19:27
AC,检查头尾两端是否相同,如果相同,直接统计最长序列;如果不相同,在中间找到相邻同颜色的作为分割点反转,统计最长序列;
点赞 回复 分享
发布于 2018-09-08 17:56
怎么翻转都是s+s其中一个子串
点赞 回复 分享
发布于 2018-09-08 17:48
import java.util.*; public class Main {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         String s = in.nextLine();         in.close();                  int len = s.length();         char[] ch = s.toCharArray();         ArrayList<Integer> index = new ArrayList<>();                        for(int i=0;i<len-1;i++) {             if(ch[i]==ch[i+1]) {                 index.add(i);             }         }                  if(index.size()==0) {             System.out.println(len);             return;         }         int max = index.get(0)+1;         int[] value = new int[index.size()+1];         value[0] = max;         for(int i=1;i<index.size();i++) {             int length = index.get(i)-index.get(i-1);             value[i] = length;             max = Math.max(max, length);         }         max = Math.max(max, len-1-index.get(index.size()-1));         value[index.size()] = len-1-index.get(index.size()-1);         if(ch[0]!=ch[len-1]) {             max = Math.max(value[0]+value[index.size()], max);         }         int ii = 1;         for(int i=1;i<index.size();i++) {             int length = 0;             if(ch[i]!=ch[len-1]) {                 length = value[index.size()]+value[ii];             }             ii++;             max = Math.max(max, length);              }         System.out.println(max);     } } 刚刚写了下,跑了下测试用例,都能过,但是不知道其他能不能
点赞 回复 分享
发布于 2018-09-08 17:30

相关推荐

已oc&nbsp;云智断更了好几天,也有一些话想说,继续更新一篇云智timeline&nbsp;4.18&nbsp;一面&nbsp;半个小时后约二面&nbsp;4.21二面&nbsp;当晚&nbsp;约hr面&nbsp;4.23hr面&nbsp;4.30&nbsp;发offer之前美团的二面挂了,进入人才库,后面又被捞起来面试,4.30号&nbsp;美团又一面,现在还没出一面结果感觉也不报什么希望,就算一面过了,还有二面,我经不起深入拷打,唉,真的,好难五一躺平了五天,吃吃玩玩睡睡~还要担心毕业,科研更是难,唉暑期可能就到此为止了,后面没有时间在这个上面了,要抓紧时间做科研,为了后面能出去实习。大厂,秋招再见!!!有一些感慨:4.1是我的第一次面试,美团,面试的时候紧张到浑身发...
daisy9542:我今晚也是美团一面,已经第六次了。我也面了其他的,没拿到 offer。但我想开了,要按照自己的节奏来,找暑期转正然后秋招大杀四方并不是唯一的出路,其实还有很多选择的,有 0 实习最后秋招拿 offer 了,也有不选择互联网去国企的外企的,考编的,创业的。现在的失败不代表以后的路都是黑暗的,只不过可能运气还没降临到头上。所以现在要做的,就是放平心态,提升自己,通过面试了解到自己的优点和不足,争取下次机会来了能好好抓住
点赞 评论 收藏
分享
03-26 22:55
门头沟学院 Java
烤冷面在迎接:河南byd,应该就是郑大了。不过24届计算机是特殊情况,那年除了九✌和强2,以及两三个关系够硬的双非,其他的都是炮灰,感觉是十几年来互联网行业最烂的一年,如果想了解最新的就业情况,得找现在的大四。
点赞 评论 收藏
分享
海螺很能干:每次看到这种简历都没工作我就觉得离谱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务