GoDemo:给定数字字符串求可能的ip组合,数字顺序不变
2016-10-08 20:13
309 查看
package main import ( "fmt" "os" "strconv" ) func getip(source string) (ips []string) { length := len(source) if length > 12 || length < 4 { return nil } if length == 4 { ip := string(source[0]) + "." + string(source[1]) + "." + string(source[2]) + "." + string(source[3]) ips = append(ips, ip) } else { s := source var ips_ [][]string //放置三个点 for i := 0; i < length-1; i++ { if i > 2 { break } for j := i + 1; j < length-1; j++ { if j-i > 3 { break } for k := j + 1; k < length-1; k++ { //fmt.Println(i, j, k) if k-j > 3 { break } if len(s[k:]) <= 4 { //fmt.Println(i, j, k) var ipt []string ipt = append(ipt, string(s[0:i+1])) ipt = append(ipt, string(s[i+1:j+1])) ipt = append(ipt, string(s[j+1:k+1])) ipt = append(ipt, string(s[k+1:])) ips_ = append(ips_, ipt) } } } } for _, ip := range ips_ { for _, i := range ip { if ii, err := strconv.Atoi(i); err != nil || ii > 255 { goto over } } ips = append(ips, ip[0]+"."+ip[1]+"."+ip[2]+"."+ip[3]) over: } } return } func main() { fmt.Println("处理字符串:", os.Args[1]) fmt.Println(getip(os.Args[1])) }
本文来自:http://blog.yiyun.pro/
相关文章推荐
- 将字符串中的字母倒序,数字顺序保持不变
- 对于给定的字符串,求其入栈后,所有可能的出栈顺序
- 一个只由字母数字字符和破折号组成的字符串S. 该字符串被N个破折号分成N + 1个组。 给定数字K,使得每个组包含完全K个字符,除了第一个组可能少于K
- 给定一个数字字符串,返回数字可能表示的所有可能的字母组合。数字与字母的对应关系和手机按键对应。
- 字符串重新排序,数字字符移到右边,字母字符移到左边,保持字符在原字符串中的前后顺序不变
- 给定一字符串,将每个单词的字符顺序倒置,单词间的顺序不变。例如:输入字符串“I love you”,输出“I evol uoy”。
- 给定一个数字字符串,返回数字可能表示的所有可能的字母组合。数字与字母的对应关系和手机按键对应
- C 输入一个字符串,删除其中所有的数字,所有大写字母改成小写,其他不变,并输出
- 陈利人 面试题 给定两个字符串s和t(len(s)>len(t)),t可能是s的一个子序列。求所有s的子序列集合中,有多少个子序列等于t。
- 第六题 反转字符串,单词内部顺序不变
- 字符串移动(字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变),要求时间和空间复杂度最小 .
- 字符串倒序单词顺序不变保留空格
- 给定一个字符串,你需要颠倒每个单词中的字符顺序,同时仍然保留空白和初始的字顺序。
- 编写一个函数,分别统计出传入字符串参数(可能不止一个参数)的英文字母,空格,数字和其他字符的个数
- linq order by charindex 排序 按给定字符串顺序排序
- java常用类练习09(拆分日期、给定随机字符串判断有多少个数字和字母)
- 蓝桥杯—串逐位和(给定一个由数字组成的字符串,得到它的各个数位的和)
- 【面试题】给定一个仅包含字母和数字(0-9)的字符串,要求找到最长递增的数字串
- 对一个字符串重新排列要求字母在钱数字在后,且不改变字母数字间的原有顺序
- 经典面试题-颠倒字符串单词顺序不变