今天京东java后端笔试
好串这两题咋写啊,为什么都跑不了满分,也没大佬发布答案
全部评论
第二题和第三题感觉是数学题
第二题这样写过了
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int ans = 0;
int jd = 1;
for(int i = 0;i < s.length();i++){
while(i < s.length()-1 && s.charAt(i) == s.charAt(i+1)){
jd++;
i++;
}
ans += (jd+1)/3;
jd = 1;
}
System.out.println(ans);
}
}
第三题我只过了40%
暑期实习吗。我还在简历筛选。。
第二题我下来想了想不知道这样对不对,其实重复消除后转化成red中的哪一个不需要再考虑,因为永远可以转化成一个不需要再次消除的(假设消之后转化成一个*再考虑转化成“red”其中任何一个,那么类似于“r*******d”,无论左右是什么字符无论中间有多少个*,都可以找到一个转化,使得所有的*都变成相邻不同的).那么问题就变成了对于原字符串里每一个重复字符的子串,需要多少次消除操作,总操作数就是每个重复字串的操作之和.就可以转化为dp问题,用一个二维dp,对于一个长度为n的子串,dp[n][0]记录化简到无相邻同样元素的最小操作数,dp[n][1]记录消除n与n-1之后无相邻元素的最小操作数.base是长度== 1 和2,对于每一个长度为i, i > 2的子串,dp[i][1] = dp[i - 2][0] + 1, dp[i][0] = min(dp[i - 1][1], dp[i][1]).
我也是欸,第二题过了40%,第三题过了45%,我后来想了下,第二题情况比较多,就比如rrrrrrr只用换2次,rrrrrrrrrr只用换3次,第三题我有一点没理解题目意思,如果说red??这种算0还是算1
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享