前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Strings, Numbers, Math 21-30

Strings, Numbers, Math 21-30

原创
作者头像
luoheng
发布2022-09-04 19:51:21
2790
发布2022-09-04 19:51:21
举报
文章被收录于专栏:luoheng

本文为《Java Coding Problems》21-30题,问题涉及String, Number和Math (共39题)。

21. 移除首尾空白字符

问题:移除字符串的首尾空白字符。

思路:使用trim方法。

代码如下:

代码语言:java
复制
public static String trim(String str) {
    return str.trim();
}

trim不支持Unicode的一些空白字符,比如\u2002。在JDK 11中提供了strip方法支持Unicode。修改代码如下:

代码语言:java
复制
public static String trim(String str) {
    return str.strip();
}

22. 查找最长公共前缀

问题:查找字符串数组的最长公共前缀。

思路:依序对每个字符串查找最长公共前缀。

代码如下:

代码语言:java
复制
// 查找两个字符串的最长公共前缀
public static String longestPrefix(String str1, String str2) {
    int minLen = Math.min(str1.length(), str2.length());
    OptionalInt idx = IntStream.range(0, minLen + 1)
            .filter(i -> minLen == i 
                || str1.charAt(i) != str2.charAt(i))
            .findFirst();
    if (idx.isPresent()) {
        return str1.substring(0, idx.getAsInt());
    }
    return str1;
}

public static String longestPrefix(String[] strs) {
    // 使用reduce对所有字符串进行查找
    return Arrays.stream(strs)
            .reduce((str1, str2) -> longestPrefix(str1, str2))
            .orElse(null);
}

23. 加缩进

问题:如何给文本(包括多行文本)加缩进。

思路:JDK 12支持String.indent方法,可以给字符串加缩进,如果是多行字符串,会给每一行都加缩进。

24. 转换字符串

问题:将字符串转化成另一个字符串。

思路:JDK 8可以使用StreamJDK 12可以使用transform方法。

代码如下:

代码语言:java
复制
public static transform(String str) {
    // JDK 8
    return Stream.of(str).map(String::toUpperCase);
    // JDK 12
    return str.transform(String::toUpperCase);
}

25. 两数最大值和最小值

问题:返回两个数中的最大值和最小值。

思路:使用Math.minMath.maxJDK 8中每个数类有自己的minmax,如Integer.minInteger.max。也可使用BinaryOperator.minByBinaryOperator.maxBy

26. 处理加法溢出

问题:求和两个大整数,并在溢出时抛出ArithmeticException异常。

思路:使用Math.addExact方法,它会在溢出时抛出异常。

代码如下:

代码语言:java
复制
public static int add(int a, int b) {
    return Math.addExact(a, b);
//        Math.subtractExact(a, b);
//        Math.multiplyExact(a, b);
}

27. 字符串转成无符号数

问题:将字符串转化成特定进制的无符号数。

思路:使用Integer.parseUnsignedInt方法。

代码如下:

代码语言:java
复制
public static int parseUInt(String str) {
    // 将字符串转成10进制的无符号整数
    return Integer.parseUnsignedInt(str, 10);
}

28. 将int转化成无符号long

问题:将int数转换成无符号的long。

思路:使用Integer.toUnsignedLong方法。

代码如下:

代码语言:java
复制
public static long toULong(int val) {
    return Integer.toUnsignedLong(val);
}

29. 将两个数作为无符号数比较

问题:将两个int数作为无符号数比较。

思路:使用Integer.compareUnsigned方法。

30. 无符号数的除法与求余。

问题:将两个int数作为无符号数进行除法和求余。

思路:使用Integer.divideUnsigned进行除法,使用Integer.remainderUnsigned进行求余。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 21. 移除首尾空白字符
  • 22. 查找最长公共前缀
  • 23. 加缩进
  • 24. 转换字符串
  • 25. 两数最大值和最小值
  • 26. 处理加法溢出
  • 27. 字符串转成无符号数
  • 28. 将int转化成无符号long
  • 29. 将两个数作为无符号数比较
  • 30. 无符号数的除法与求余。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档