算法练习(字符串)

Posted 小小菜_v

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法练习(字符串)相关的知识,希望对你有一定的参考价值。

BM83 字符串变形

描述 对于一个长度为 n 字符串,我们需要对它做一些变形。

首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。

比如"Hello World"变形后就变成了"wORLD hELLO"。

数据范围: 1≤n≤10 ^6 , 字符串中包括大写英文字母、小写英文字母、空格。 进阶:空间复杂度O(n) , 时间复杂度 O(n)
输入描述: 给定一个字符串s以及它的长度n(1 ≤ n ≤ 10^6)
返回值描述:请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。

示例1
输入:"This is a sample",16
返回值:"SAMPLE A IS tHIS"

示例2
输入:"nowcoder",8
返回值:"NOWCODER"

示例3
输入:"ios",3
返回值:"Ios"
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param s string字符串 
# @param n int整型 
# @return string字符串
#
class Solution:
    def trans(self , s: str, n: int) -> str:
        # write code here
        strings = " ".join(s.split(" ")[::-1])
        return strings.swapcase()

BM84 最长公共前缀

描述 给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。

数据范围:0≤n≤5000, 0≤len(strsi)≤5000 进阶:空间复杂度 O(1),时间复杂度 O(n*len)

示例1
输入:["abca","abc","abca","abc","abcc"]
返回值:"abc"

示例2
输入:["abc"]
返回值:"abc"
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param strs string字符串一维数组
# @return string字符串
#
import sys
sys.setrecursionlimit(1000000)
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        # write code here
        # 方式一
        if strs == []:
            return ''
        origin = strs.pop(0)
        for s in strs:
            min_len = min(len(origin), len(s))
            print(origin)
            for i in range(min_len):
                # print(origin[i])
                if origin[i] != s[i]:
                    return origin[:i]
            origin = origin[:min_len]
        return origin
        
        # 方式二
        # n = len(strs)
        # #空字符串数组
        # if n == 0:
        #     return ""
        # #遍历第一个字符串的长度
        # for i in range(len(strs[0])):
        #     temp = strs[0][i]
        #     #遍历后续的字符串
        #     for j in range(1,n):
        #         #比较每个字符串该位置是否和第一个相同
        #         if i == len(strs[j]) or strs[j][i] != temp:
        #             #不相同则结束
        #             return strs[0][0:i]
        # #后续字符串有整个字一个字符串的前缀
        # return strs[0]

BM86 大数加法

描述 以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。

数据范围:s.length,t.length≤100000,字符串仅由’0’~‘9’构成 要求:时间复杂度 O(n)

示例1
输入:"1","99"
返回值:"100"
说明:1+99=100   
    
示例2
输入:"114514",""
返回值:"114514"
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 计算两个数之和
# @param s string字符串 表示第一个整数
# @param t string字符串 表示第二个整数
# @return string字符串
#
class Solution:
    def solve(self , s: str, t: str) -> str:
        # write code here
        if s == '':
            s = 0
        if t == '':
            t = 0
        
        s = int(s)
        t = int(t)

        return s+t

以上是关于算法练习(字符串)的主要内容,如果未能解决你的问题,请参考以下文章

算法练习之两数之和

上期回顾(Hash算法):两数之和

查找所有连接对之和的高效算法

数据结构与算法随笔:LeetCode算法练习

python练习:假设s是一个字符串,返回s中十进制数字之和。例如,如果s是‘a2b3c’,则返回5。

算法哈希表 ( 两数之和 )