乐趣区

关于golang:golangleetcode初级反转字符串整数反转

第一题 反转字符串

题目信息

编写一个函数,其作用是将输出的字符串反转过去。输出字符串以字符数组 s 的模式给出。

不要给另外的数组调配额定的空间,你必须原地批改输出数组、应用 O(1) 的额定空间解决这一问题。

 

示例 1:

输出:s = [“h”,”e”,”l”,”l”,”o”]
输入:[“o”,”l”,”l”,”e”,”h”]
示例 2:

输出:s = [“H”,”a”,”n”,”n”,”a”,”h”]
输入:[“h”,”a”,”n”,”n”,”a”,”H”]
 

提醒:

1 <= s.length <= 105
s[i] 都是 ASCII 码表中的可打印字符

解题思路

很简略的思路,遍历二分之一的数组,让前半部分与后半局部一一替换

代码

func reverseString(s []byte)  {var n int=len(s)-1
    for i:=0;i<=n/2;i++{s[i],s[n-i]=s[n-i],s[i]
    }
}

复杂度剖析

工夫复杂度:O(N),其中 N 为字符数组的长度。一共执行了 N/2 次的替换。
空间复杂度:O(1)。只应用了常数空间来寄存若干变量。

第二题 整数反转

题目信息

给你一个 32 位的有符号整数 x,返回将 x 中的数字局部反转后的后果。

如果反转后整数超过 32 位的有符号整数的范畴 [−2^31,  2^31 − 1],就返回 0。

假如环境不容许存储 64 位整数(有符号或无符号)。
 

示例 1:

输出:x = 123
输入:321
示例 2:

输出:x = -123
输入:-321
示例 3:

输出:x = 120
输入:21
示例 4:

输出:x = 0
输入:0
 

提醒:

-2^31 <= x <= 2^31 – 1

解题思路

https://leetcode-cn.com/probl…

代码

func reverse(x int) (rev int) {
    for x != 0 {
        if rev < math.MinInt32/10 || rev > math.MaxInt32/10 {return 0}
        digit := x % 10
        x /= 10
        rev = rev*10 + digit
    }
    return
}

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-leetcode-solution-bccn/
起源:力扣(LeetCode)著作权归作者所有。商业转载请分割作者取得受权,非商业转载请注明出处。

复杂度剖析

工夫复杂度:O(log∣x∣)。翻转的次数即 x 十进制的位数。

空间复杂度:O(1)。

退出移动版