网易春招Java编程题

题目如下:
给出字符串:99xxxx,输出将9替换成g的所有组合结果,例如99xxxx,9gxxxx,g9xxxx,ggxxxx
全部评论
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNextLine()){ String line = scanner.nextLine(); char[] ch = line.toCharArray(); System.out.println(process(ch)); } scanner.close(); } private static String process(char[] ch) { List<Integer> list = new ArrayList<Integer>(); StringBuilder sb = new StringBuilder(); int high = 0; //high代表遍历的上限 for (int i = 0; i < ch.length; i++) { if (ch[i] == 'g' || ch[i] == '9') { list.add(i); high = high * 2 + 1 ; } } for (int i = 0; i <= high; i++) { for (int j = 0; j < list.size(); j++) { if (((i>>>j)&1) != 0) { ch[list.get(j)] = '9'; }else { ch[list.get(j)] = 'g'; } } sb.append(new String(ch)+","); } return sb.toString(); } } 我的代码。
点赞 回复 分享
发布于 2016-03-28 19:33
简单的话递归就能写吧
点赞 回复 分享
发布于 2016-03-29 13:30
全排列做
点赞 回复 分享
发布于 2016-03-29 11:06
动态规划吧。。。
点赞 回复 分享
发布于 2016-03-28 19:50
我思路是 先扫一遍字符串,统计9的个数,记为n,并将其下标存于一个长度为n的int数组里,记为index[];可以看出问题的规模为2^n,所以n不会太大。。 如果n < 32,就可以用一个32位int的二进制来表示9和g的分布,相当于0和1,只要用位运算找到这个int整形数中1的分布,去index数组里去处下标,将对应的9改为g即可。。 for(int i = 0; i < 2^n; i++) { _str = str; //取一个源字符串的副本 for(int j = 0; j < n; j++) { //这里j不用取到32,因为i最大为2^n - 1   if((i & (1<<j) != 0) {//表明这一位上是1. _str[j] = 'g'; } } sysout(_str);//输出 }
点赞 回复 分享
发布于 2016-03-28 19:29
我也做的这一题,‘g’和'9'相当于二进制0和1。 比如说两个位置,那么所有情况用二进制表示就是 00 01 10 11。换成g和9就相当于gg g9 9g 99。 思路就是先记录下g和9出现的位置。比如g和9共出现n次,那么就是分别判断从0到2^n  - 1这些数字的二进制表示中哪些位是0 哪些位是1。是0的位置用g代替,是1的位置用9代替,然后再修改原字符串。
点赞 回复 分享
发布于 2016-03-28 19:21
要是这样连续的话,可以先分割,然后将9和g的部分使用全排列,再将全排列的结果加上其余部分
点赞 回复 分享
发布于 2016-03-28 18:28

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
05-26 09:07
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务