JAVA经典百题之删除字符

题目:删除一个字符串中的指定字母,如:字符串 “aca”,删除其中的 a 字母。

解题思路
这题目要求从给定字符串中删除指定的字符。我们需要实现一个函数,该函数接受原始字符串和要删除的字符,然后返回删除指定字符后的新字符串。

  1. 遍历删除法:遍历原始字符串,如果字符不是要删除的字符,则将其添加到新字符串中,最后返回新字符串。
  2. StringBuilder法:使用Java中的StringBuilder类,遍历原始字符串,如果字符不是要删除的字符,则将其添加到StringBuilder对象中,最后调用toString()方法得到新字符串。
  3. 使用Java字符串替换函数:使用Java中的replace()函数将指定字符替换为空字符串,得到新字符串。

现在,让我们使用这三种方法来实现删除指定字符的功能。

方法1: 遍历删除法

  • 实现代码
public class StringDeletion {
    public static String removeCharacter(String str, char c) {
        StringBuilder result = new StringBuilder();
        
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) != c) {
                result.append(str.charAt(i));
            }
        }
        
        return result.toString();
    }

    public static void main(String[] args) {
        String str = "aca";
        char toRemove = 'a';
        
        System.out.println("Original string: " + str);
        String result = removeCharacter(str, toRemove);
        System.out.println("String after removing '" + toRemove + "': " + result);
    }
}
  • 优点
    • 直观易懂,基于遍历和条件判断。
    • 适用于任何情况,不依赖特定的类或库。
  • 缺点
    • 需要遍历整个字符串,时间复杂度为O(n)。

方法2: StringBuilder法

  • 解题思路
    • 使用Java的StringBuilder类,遍历原始字符串,如果字符不是要删除的字符,则将其添加到StringBuilder对象中,最后调用toString()方法得到新字符串。
  • 实现代码
public class StringDeletion {
    public static String removeCharacter(String str, char c) {
        StringBuilder result = new StringBuilder();
        
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) != c) {
                result.append(str.charAt(i));
            }
        }
        
        return result.toString();
    }

    public static void main(String[] args) {
        String str = "aca";
        char toRemove = 'a';
        
        System.out.println("Original string: " + str);
        String result = removeCharacter(str, toRemove);
        System.out.println("String after removing '" + toRemove + "': " + result);
    }
}
  • 优点
    • 使用StringBuilder可以高效地构建字符串。
    • 遍历一次字符串,时间复杂度为O(n)。
  • 缺点
    • 需要额外的StringBuilder对象。

方法3: 使用Java字符串替换函数

  • 解题思路
    • 使用Java的replace()函数将指定字符替换为空字符串,得到新字符串。
  • 实现代码
public class StringDeletion {
    public static String removeCharacter(String str, char c) {
        return str.replace(String.valueOf(c), "");
    }

    public static void main(String[] args) {
        String str = "aca";
        char toRemove = 'a';
        
        System.out.println("Original string: " + str);
        String result = removeCharacter(str, toRemove);
        System.out.println("String after removing '" + toRemove + "': " + result);
    }
}
  • 优点
    • 简单、快速,利用Java标准库函数实现。
    • 适用于通用情况,不需要手动实现转换逻辑。
  • 缺点
    • 可能比手动遍历稍慢。

总结和推荐

  • 在这种特定问题中,三种方法都能够实现正确的功能。
  • 从代码简洁度、通用性、效率等方面考虑,方法3(使用Java字符串替换函数)可能是最好的选择,因为它能够达到较好的效率,同时不需要依赖额外数据结构。
  • 在实际情况中,可以根据问题的复杂度、代码的可维护性和可扩展性来选择最适合的实现方法。

你可能感兴趣的:(JAVA经典百题,java,python,算法)