【JAVA】【刷题子】1108.IP 地址无效化

191 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情

一、题目与题目分析

题目

  给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。
  所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."示例和提示.png
  (题目来源:力扣:1108.IP 地址无效化

题目分析

  有效地址IPv4转换嘛,就是把.转为[.];即把有效地址转为无效地址。

二、整体逻辑与主要代码

题目分析已经比较清楚了,接下来我们进入代码设计。

整体逻辑

  先判断传入的字符串是否符合IPv4,符合则进行匹配拼接对应字符串即可。

主要代码

整体逻辑清晰了之后,同时也有较清楚的注释。直接来看代码吧! (如有不懂的或者更好的建议,欢迎评论区分享友友的看法哈~)

【1】遍历解法

class Solution {
	public static String defangIPaddr(String address) {
		StringBuilder sb = new StringBuilder();
		if (address == null) {
			return sb.toString();
		}
		// 前后去空
		address = address.trim();
		if (address.length() < 7) { // 字符串小于7(即不符合IP地址的)
			return sb.toString();
		}
		for (char ch : address.toCharArray()) {
			// 字符串转字符数组,同时进行遍历
			if (ch == '.') { // 当字符为 '.'时,进行拼接
				sb.append("[" + ch + "]");
			} else {
				// 否则,直接添加
				sb.append(ch);
			}
		}
		// 转为字符串类型
		return sb.toString();
	}
}

  后来做完后,才注意到;题目是传入有效的IPv4地址,所以可以去掉判断是否为空、前后去空后小于7的判断。
  代码如下

		if (address == null) {
			return sb.toString();
		}
		// 前后去空
		address = address.trim();
		if (address.length() < 7) { // 字符串小于7(即不符合IP地址的)
			return sb.toString();
		}

【2】替换解法

class Solution {
    public String defangIPaddr(String address) {
        // 直接替换
        return address.replaceAll("\\.", "[.]");
    }
}

【3】固定字符数组解法(执行耗时 0ms)

想着会不会有更好一些的方法,看到评论区还可以通过指定字符数组长度来做。
固定字符数组解法.png
小改一下:

class Solution {
	public static String defangIPaddr(String address) {
		// +6对应三个“.”的“[”和“]”
		char[] charArr = new char[address.length() + 6]; // 根据传入地址长度+6,定义指定长度数组;节省空间
		int j = 0;
		for (char ch : address.toCharArray()) {// 字符串转字符数组,同时进行遍历
			if (ch != '.') {
				charArr[j++] = ch;
			} else {
				charArr[j++] = '[';
				charArr[j++] = ch;
				charArr[j++] = ']';
			}
		}
		// 转为字符串类型
		return String.valueOf(charArr);
	}
}

三、结果展示

【1】结果展示
结果展示1.png
【3】结果展示
结果展示3.png

四、人生总结

勿以物喜,不以己悲

题目数据库

Gitee:传送门

文章小尾巴

文章写作、模板、文章小尾巴可参考:《写作“小心思”》
  感谢你看到最后,最后再说两点~
  ①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
  ②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
  我是南方者,一个热爱计算机更热爱祖国的南方人。

  (文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)