美文网首页
Go小项目-字符串偏移

Go小项目-字符串偏移

作者: c4a1d989518e | 来源:发表于2018-03-16 13:55 被阅读26次

    项目描述

    就是输入一个abc的字符串,然后在输入偏移量,然后,就会给出一个结果,一个偏移的结果。



    以上前三个是我输入的

    项目代码

    代码如下

    package main
    //这个函数的作用,就是输入一个abc的字符串,然后在输入偏移量,然后,就会给出一个结果,一个偏移的结果。
    import (
        "fmt"
    )
    
    func main() {
        var length, delta int
        var input string
        fmt.Scanf("%d\n", &length)
        fmt.Scanf("%s\n", &input)
        fmt.Scanf("%d\n", &delta)
    
        var ret []rune
        for _, ch := range input {
            ret = append(ret, cipher(ch, delta))
        }
        fmt.Println(string(ret))
    }
    
    func cipher(r rune, delta int) rune {
        if r >= 'A' && r <= 'Z' {
            return rotate(r, 'A', delta)
        }
        if r >= 'a' && r <= 'z' {
            return rotate(r, 'a', delta)
        }
        return r
    }
    //rune是unicode字符类型,所以打印的时候,直接打印,会是数字,而需要包裹层string
    func rotate(r rune, base, delta int) rune {
        tmp := int(r) - base
        tmp = (tmp + delta) % 26
        fmt.Println(string(rune(tmp+base)))
        return rune(tmp + base)
    }
    
    //
    // func rotate(s rune, delta int, key []rune) rune {
    //  idx := strings.IndexRune(string(key), s)
    //  if idx < 0 {
    //      panic("idx < 0")
    //  }
    //  idx = (idx + delta) % len(key)
    //  return key[idx]
    // }
    
    

    参考链接

    https://github.com/gophercises/hr1/tree/solution

    相关文章

      网友评论

          本文标题:Go小项目-字符串偏移

          本文链接:https://www.haomeiwen.com/subject/virhqftx.html