字节跳动2019春招研发编程题——万万没想到之聪明的编辑(Java实现)

x33g5p2x  于2022-07-26 转载在 Java  
字(1.4k)|赞(0)|评价(0)|浏览(498)

描述
我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:

  1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello
  2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello
  3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC

我特喵是个天才!我在蓝翔学过挖掘机和程序设计,按照这个原理写了一个自动校对器,工作效率从此起飞。用不了多久,我就会出任CEO,当上董事长,迎娶白富美,走上人生巅峰,想想都有点小激动呢!
……
万万没想到,我被开除了,临走时老板对我说: “做人做事要兢兢业业、勤勤恳恳、本本分分,人要是行,干一行行一行。一行行行行行;要是不行,干一行不行一行,一行不行行行不行。” 我现在整个人红红火火恍恍惚惚的……

请听题:请实现大锤的自动校对程序

数据范围: 1≤n≤50 ,每个用例的字符串长度满足 1≤l≤1000
输入描述:
第一行包括一个数字N,表示本次用例包括多少个待校验的字符串。

后面跟随N行,每行为一个待校验的字符串。
输出描述:
N行,每行包括一个被修复后的字符串。

实现

  1. import java.util.Scanner;
  2. public class Main{
  3. public static void main(String[] args){
  4. Scanner sc = new Scanner(System.in);
  5. int n = sc.nextInt();
  6. for(int i = 0;i<n;i++){
  7. System.out.println(Main.verify(sc.next()));
  8. }
  9. }
  10. /**
  11. 校验字符串
  12. */
  13. public static String verify(String str){
  14. if(str.length()<3){ //字符串长度小于三时,直接返回
  15. return str;
  16. }
  17. String result = str.substring(0,2);
  18. if(str.charAt(0)==str.charAt(1)&&str.charAt(1)==str.charAt(2)){ //前三个字符是否相同
  19. result=result;
  20. }else{
  21. result += str.charAt(2);
  22. }
  23. int i=3;
  24. int index=3;
  25. int length = str.length();
  26. while(index<length){
  27. if((str.charAt(i-2)==str.charAt(i-1)&&str.charAt(i-1)==str.charAt(i))||(str.charAt(i-3)==str.charAt(i-2)&&str.charAt(i-1)==str.charAt(i))){
  28. str = str.substring(0,i) + str.substring(i+1);
  29. ++index;
  30. }else{
  31. result += str.charAt(i);
  32. ++index;
  33. ++i;
  34. }
  35. }
  36. return result;
  37. }
  38. }

相关文章

最新文章

更多