确定两串乱序同构 、原串翻转、确定字符互异

题目描述

给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。

给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。


测试样例:
"This is nowcoder","is This nowcoder"
返回:true
"Here you are","Are you here"
返回:false

python 代码
# -*- coding:utf-8 -*-
class Same:
    def checkSam(self, stringA, stringB):
        strA = sorted(stringA)
        strB = sorted(stringB)
        
        if strA == strB:
            return True
        else:
            return False

c++代码
//有点无耻额,直接用的sort函数,虽然简洁,复杂度却是O(nlogn);
//正规的做法,应该是hash,用256的元素记录每个字符出现的次数
//再进行比较,扫描一遍,比较一遍,复杂度只要O(n).
class Same {
public:
    bool checkSam(string stringA, string stringB) {
        
        sort(stringA.begin(),stringA.end());
        sort(stringB.begin(),stringB.end());
        return stringA.compare(stringB)==0;
    }
};

题目描述

请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。

给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。

测试样例:

"This is nowcoder"
返回:"redocwon si sihT"
c++代码
class Reverse {
public:
    string reverseString(string iniString) {
        // write code here
        char temp;
        int j = iniString.size()-1;
        int i = 0;
        
       
        while(i<j){
            temp=iniString[i];
            iniString[i]=iniString[j];
            iniString[j]=temp;
            i++;
            j--;
        }
         
        return iniString;
    }
};

python代码

# -*- coding:utf-8 -*-
class Reverse:
    def reverseString(self, iniString):
        # write code here
        new_list=list(iniString)
        new_list.reverse()
        return ''.join(new_list)

题目描述

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。

给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。

测试样例:
"aeiou"
返回:True
"BarackObama"
返回:False

python代码
# -*- coding:utf-8 -*-
class Different:
    def checkDifferent(self, iniString):
        # write code here
        string=iniString
        array=list(string)
        for i in range(0,len(array)-1):
            for j in range(i+1,len(array)-1):
                if array[i]==array[j]:     
                    return False
        return True



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值