【问题标题】:How to reverse replace remove Strings without any inbuilt methods如何在没有任何内置方法的情况下反向替换删除字符串
【发布时间】:2021-05-13 05:16:52
【问题描述】:

我们如何实现对字符串的反向、替换、删除操作。我在面试,面试官让我写一个逻辑到下面。

  • 输入:“这是一次采访”

  • 如果我们没有用 z 替换它

  • 去掉空格

  • 完全颠倒句子

  • 在不使用任何内置方法的情况下编写逻辑***

我无法像使用 % 和 / 操作符对整数进行比较那样来破坏字符串并进行比较。我要求他使用一种内置方法 charAt();实现这一目标。但是有没有办法不使用 charAt() 方法来实现呢?

        String input = "This is an interview";
        char t = 't';
        char z = 'z';
        char space = ' ';
        String output = "";
        char c = 'i';
        for(int i=0;;i++){
            try{
                c = input.charAt(i);     //here I have used one inbuilt method but how can we avoid this
            }catch(Exception e){
                break;
            }
         
            if(c==t) {
                output = z + output;
           }else if(c!=space){ 
                output = c+output;  
            }
        }
        System.out.println(output);
    }

【问题讨论】:

  • 准确地说,你想避免只使用String的内置方法吗?
  • 不,否则我会使用字符串生成器。任何使用点的内置方法。
  • @JagadishDabbiru 如果不调用 String 上的方法,您将无法做到这一点。
  • 解决这个(奇怪的)面试问题的一种方法是将input重新定义为char[](如果允许的话,谁知道)。然后你可以简单地迭代 char 数组中的字符。否则,我看不到不使用任何内置方法的方法。
  • 当我调试 chartAt 方法时。它在字符串类@Stable private final byte[] value; 中使用了这个字段。有没有办法使用反射来获取这个字段?

标签: java string algorithm replace reverse


【解决方案1】:

您可以只使用字符数组 (char[ ]) 而不是字符串,并使用 [ ] 来访问不同的字符而不是 charAt。

char input[] = {'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', 'n', ' ', 'i', 'n', 't', 'e', 'r', 'v', 'i', 'e', 'w'};
int size = 20;
String output = "";
for(int i = size-1; i >= 0; i--) {
    if(input[i] == 't')
        output += "c";
    else if(input[i] != ' ')
        output += input[i];
}
System.out.println(output);

此代码已经过测试。

Input: This is an interview
Output: weivrecninasisihT

【讨论】:

  • 来自标题“如何反向替换删除Strings...”而不是char[],所以我不确定这是否有助于 OP(尽管我喜欢跳出框框思考)。跨度>
猜你喜欢
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 2019-08-29
  • 2010-11-11
  • 2013-08-18
相关资源
最近更新 更多