zoukankan      html  css  js  c++  java
  • GO语言实现小技巧

    1.使用go实现左右读都一样

    func process(str string) bool  {
    	t:=[]rune(str)
    	length := len(t)
    	for i,_ :=range t{
    		if i == length/2{
    			break
    		}
    		last := length-i -1
    		if t[i] !=t[last]{
    			return false
    		}
    
    	}
    	return true
    }
    
    func main()  {
       var str string
       fmt.Scanf("%sd",&str)
       if process(str){
          fmt.Println("yes")
       }else {
          fmt.Println("no")
       }
    }
    

    2.使用go语言实现因子之和等于他本身(完数)

    func perfect(n int)bool{
    	var sum int = 0
    	for i:=1;i<n;i++{
    		if n%i ==0{
    			sum+=i
    		}
    	}
    	return  n == sum
    }
    func process(n int)  {
    	for i:=1;i<n+1;i++{
    		if perfect(i){
    			fmt.Println(i)
    		}
    	}
    
    }
    func main()  {
       var n int
       fmt.Scanf("%d",&n)
       process(n)
       
    }
    

    3.go语言实现九九乘法表

    func multi(){
    	for i:=0;i<9;i++{
    		for j:=0;j<=i;j++{
    			fmt.Printf("%d*%d=%d	",(i+1),j+1,(i+1)*(j+1))
    		}
    		fmt.Println()
    	}
    
    }
    func main(){
        multi
    }
    
    

    4.输入一行字符,分别统计字母数字空格及其他字符的个数

    func count(str string)(worldCount,spaceCount,numberCount,otherCount int)  {
    	c :=[]rune(str)
    	for _,v := range c{
    		switch  {
    		case v>='a'&& v<'z':
    			fallthrough
    		case v>='A' && v<='Z':
    			worldCount++
    		case v == ' ':
    			spaceCount++
    		case v>=0 && v<=9:
    			numberCount++
    		default:
    			otherCount++
    		}
    	}
    	return
    }
    func main()  {
    	reader := bufio.NewReader(os.Stdin)
    	result,_,err := reader.ReadLine()
    	if err != nil{
    		fmt.Println("read from console err:",err)
    
    	}
    	wc,sc,nc,oc := count(string(result))
    	fmt.Printf("world count:%d
    space count:%d
    number count:%d
    other count:%d
    ",wc,sc,nc,oc)
    }
    
    

    5.利用字符串计算大数值的数字之和

    func multi(str1,str2 string) (result string)  {
    	if len(str1) == 0 && len(str2) == 0{
    		result = "0"
    		return
    	}
    	var index1 = len(str1)-1
    	var index2 = len(str2)-1
    	//用left记录进位
    	var left int
    	for index1 >=0 && index2 >=0 {
    		//利用ASCII码来计算实际值,
    
    		c1 :=str1[index1] - '0'
    
    		c2 :=str2[index2] - '0'
    
    		//c1和c2和left类型不一致,需要转成一致
    		sum := int(c1) + int(c2) + left
    		if sum >= 10{
    			left = 1
    		}else {
    			left = 0
    		}
    		c3 := (sum % 10) +'0'
    		result = fmt.Sprintf("%c%s",c3,result)
    		index1--
    		index2--
    	}
    	for index1 >=0 {
    		c1 := str1[index1]-'0'
    		sum := int(c1) + left
    		if sum >= 10{
    			left = 1
    		}else {
    			left = 0
    		}
    		c3 :=(sum % 10)+'0'
    		result = fmt.Sprintf("%c%s",c3,result)
    		index1--
    	}
    	for index2 >=0{
    		c1 := str2[index2]-'0'
    		sum := int(c1) +left
    		if sum >= 10{
    			left = 1
    		}else {
    			left = 0
    		}
    		c3 :=(sum % 10)+'0'
    		result = fmt.Sprintf("%c%s",c3,result)
    		index2--
    	}
    	if left ==1{
    		result = fmt.Sprintf("1%s",result)
    	}
    	return
    }
    
    func main()  {
    	reader := bufio.NewReader(os.Stdin)
    	result ,_,err :=reader.ReadLine()
    	if err != nil{
    		fmt.Println("read from console err:",err)
    		return
    	}
    	strSlice := strings.Split(string(result),"+")
    	if len(strSlice) !=2{
    		fmt.Println("please input a+b")
    		return
    	}
    	strNumber1 := strings.TrimSpace(strSlice[0])
    	strNumber2 := strings.TrimSpace(strSlice[1])
    	fmt.Println(multi(strNumber1,strNumber2))
    }
    
  • 相关阅读:
    HDU 2852 KiKi's K-Number (主席树)
    HDU 2089 不要62
    Light oj 1140 How Many Zeroes?
    Bless You Autocorrect!
    HDU 6201 transaction transaction transaction
    HDU1561 The more ,The better (树形背包Dp)
    CodeForces 607B zuma
    POJ 1651 Mulitiplication Puzzle
    CSUOJ 1952 合并石子
    Uva 1599 Ideal path
  • 原文地址:https://www.cnblogs.com/mqhpy/p/13469852.html
Copyright © 2011-2022 走看看