首页 > 试题广场 >

字符串分隔

[编程题]字符串分隔
  • 热度指数:1149539 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;

•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:

连续输入字符串(每个字符串长度小于等于100)



输出描述:

依次输出所有分割后的长度为8的新字符串

示例1

输入

abc

输出

abc00000
package main

import (
    "fmt"
)

func main() {
    a := ""
    n, _ := fmt.Scan(&a)

    sep := 8

    if n != 0 {
        remainder := len([]rune(a)) % sep

        if remainder == 0 {
            //
        } else {
            for sep - remainder > 0 {
                remainder++
                a += "0"
            }
        }

        for i := 0; i < len([]rune(a)); i+=sep {
            fmt.Println(a[i:i+sep])
        }
    }
}

发表于 2023-09-25 15:48:26 回复(0)
package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
   input := ""
   scanner := bufio.NewScanner(os.Stdin)
   scanner.Scan()
   input = scanner.Text()
   if input == ""{
    fmt.Println()
   }else {
    val := len(input)/8
    for i := 1;i <= val;i++{
        fmt.Println(input[(i-1)*8:i*8])
    }
    if val*8 < len(input){
        fmt.Println(input[val*8:]+strings.Repeat("0", (val+1)*8-len(input)))
    }
   }
}
发表于 2023-08-22 16:51:59 回复(0)
package main

import (
	"fmt"
	"strings"
)

func main() {
	var a string
	fmt.Scan(&a)

	q := len(a) / 8
	r := len(a) % 8
	for i := 0; i < q; i++ {
		fmt.Println(a[i*8 : i*8+8])
	}
	if r != 0 {
		fmt.Println(a[q*8:] + strings.Repeat("0", 8-r))
	}
}

发表于 2023-07-07 20:38:19 回复(0)
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	str := ""
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Scan()
	str = scanner.Text()
	if str == "" {
		fmt.Println()
	} else {
		if len(str) <= 8 {
			res := str
			for i := 0; i < 8-len(str); i++ {
				res += "0"
			}
			fmt.Println(res)
		} else {
			val := len(str) / 8
			if len(str)%8 != 0 {
				fmt.Println(str[0:8])
				for i := 1; i < val; i++ {
					s := str[8*i : 8*(i+1)]
					fmt.Println(s)
				}
				last := str[8*val:]
				last1 := last
				for i := 0; i < 8-len(last1); i++ {
					last += "0"
				}
				fmt.Println(last)

			}else{
                fmt.Println(str[0:8])
				for i := 1; i < val; i++ {
					s := str[8*i : 8*(i+1)]
					fmt.Println(s)
				}
            }
		}
	}
}
发表于 2023-02-07 18:04:32 回复(0)
package main

import "fmt"

func main() {
    var s string
    fmt.Scanln(&s)
    n := len(s)
    strs := []string{}
    for n >= 8 {
        strs = append(strs, s[:8])
        n -= 8
        s = s[8:]
    }
    if n > 0 {
        for i := 0; i < 8-n; i++ {
            s += "0"
        }
        strs = append(strs, s)
    }
    for i := 0; i < len(strs); i++ {
        fmt.Println(strs[i])
    }
}


发表于 2022-08-11 22:27:33 回复(0)
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	result := make([]string, 0)
	for scanner.Scan() {
		input := scanner.Text()
		input += "0000000"
		for len(input) >= 8 {
			result = append(result, input[0:8])
			input = input[8:]
		}
	}
	for _, item := range result {
		fmt.Println(item)
	}
}


发表于 2022-05-22 16:37:25 回复(0)
package main

import (
    "bufio"
    "os"
    "fmt"
)

func main(){
    scanner:=bufio.NewScanner(os.Stdin)
    for scanner.Scan(){
        input:=scanner.Text()
        count:=len(input)
        for i:=0;i<count;{
            if i+8<count{
                fmt.Println(input[i:i+8])
                i=i+8
            }else{
                str:=input[i:]
                zeroCount:=i+8-count
                for j:=0;j<zeroCount;j++{
                    str=str+"0"
                }
                fmt.Println(str)
                break
            }
        }
    }
}

发表于 2022-03-13 18:25:39 回复(0)
package main

import (
    "os"
    "fmt"
    "bufio"
    "strings"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    for {
        scanner.Scan()
        str := scanner.Text()
        if str == "" {    // loop exit
            break
        }
        
        slice := strings.Split(str, "")
        length := len(slice)
        
        begin := 0
        for i := 1; ; i++{
            end := i * 8 
            if length >= end {
                fmt.Println(strings.Join(slice[begin:end], ""))
                if length == end {
                    break
                }
            } else {
                var target string
                prefix := strings.Join(slice[begin:length], "")
                target = prefix
                for zeroCount := (i*8) - length; zeroCount > 0; zeroCount--{
                    target += "0"
                }
                fmt.Println(target)
                break
            }
            begin = end
            
        }
    }
}
做得比较笨。
发表于 2022-02-24 21:06:37 回复(0)
package main 
import (
    "fmt"
)
func main () {
    var (
        strs string
        err error
    )
    _, err = fmt.Scan(&strs)
    for ;err==nil; {
        for {
            li := make([]byte, 0)
            for i:=0; i<8; i++ {
                if i<len(strs) {
                    li = append(li, strs[i])
                } else {
                    li = append(li, '0')
                }
            }
            fmt.Println(string(li))
            if len(strs)>8 {
                strs = strs[8:]
            } else {
                break
            }
        }
        _, err = fmt.Scan(&strs)
    }
}

发表于 2022-02-21 23:01:32 回复(0)
package main

import (
    "bufio"
    "fmt"
    "os"
)

func StrSplit(str string) []string{
    var newStrS []string
    var zeroByte = []byte("0")[0]

    for{
        // 尾部无字符直接退出分隔循环
        if len(str) == 0{
            break
        }
        // 尾部不足八个字符需要补足
        if len(str) < 8{
            // 要补足的字符
            var addByte = make([]byte, 8 - len(str))
            for pos, _ := range addByte{
                addByte[pos] = zeroByte
            }
            newStrS = append(newStrS, fmt.Sprintf("%s%s", str, string(addByte)))
            break
        }
        // 切分8位的字符串
        newStrS = append(newStrS, str[:8])
        str = str[8:]
    }
    return newStrS
}

func hj4Scan() []string {
    var scanner = bufio.NewScanner(os.Stdin)
    var inputS []string

    // 获取输入
    for {
        scanner.Scan()
        input := scanner.Text()
        if input == ""{
            break
        }
        inputS = append(inputS, input)
    }
    return inputS
}

func main(){
    var inputS = hj4Scan()

    for _, input := range inputS{
        splitS := StrSplit(input)
        for _, _str := range splitS{
            fmt.Printf("%s\n", _str)
        }
    }
}

发表于 2021-10-02 23:51:39 回复(0)

问题信息

难度:
10条回答 135771浏览

热门推荐

通过挑战的用户

查看代码