package com.algorithm;
/**
* 面试锦集:
* 要求不使用JDK自带的API,手动实现剔除某字符串中所有空格
*
* @author 小辉哥/小辉GE
* <p>
* 2019年8月2日 下午17:19:38
*/
public class StringTrims {
public static void main(String[] args) {
String str = new String(" ab a bc abc d ");
// 这里需要解释一下String.class自带的API例如replaceAll("\\s+", "")可以实现,
// 但是trim()只是替换掉字符串两端的空格!!!
System.out.println("String.class自带的trim()调用结果:" + str.trim());
// trims1方法思维比较直接,但是代码质量并不高,做了两次同样效率的for循环
System.out.println("trims1方法调用结果:" + trims1(str));
// trims2方法巧用的运用了StringBuilder,单层循环搞定(当然,大家可能会有更好的代码解决,这里仅供参考)。
System.out.println("trims2方法调用结果:" + trims2(str));
}
/**
* 去除所有空格trims1方法
*
* @param args
* @return
*/
public static String trims1(String args) {
char[] value = args.toCharArray();
int len = value.length;
// 定义处理后的char数组
char res[] = null;
int reslen = 0;
int index = 0;
for (int i = 0; i < len; i++) {
// 非空格的字符
if (value[i] > ' ') {
reslen++;
}
}
res = new char[reslen];
for (int i = 0; i < len; i++) {
// 非空格的字符
if (value[i] > ' ') {
res[index] = value[i];
index++;
}
}
return (index > 0) ? new String(res) : args;
}
/**
* 去除所有空格trims2方法
*
* @param args
* @return
*/
public static String trims2(String args) {
StringBuilder builder = new StringBuilder();
char[] value = args.toCharArray();
int len = value.length;
int index = 0;
for (int i = 0; i < len; i++) {
// 非空格的字符
if (value[i] > ' ') {
builder.append(value[i]);
index++;
}
}
return (index > 0) ? builder.toString() : args;
}
}
测试输出结果如下:
以上代码仅供参考,如有不当之处,欢迎指出!!!
更多干货,欢迎大家关注和联系我。期待和大家一起更好的交流、探讨技术!!!