image

编辑人: 沉寂于曾经

calendar2025-07-24

message4

visits662

最近面试遇到的算法编程笔试题目

1 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。

方法:

```
def zipString(iniString):
    i=0;
    result='';
    num=1;
    currentChar='';
    while i<len(iniString):
        if(i==0):
            result+=iniString[i];
            currentChar=iniString[i];
        else:
            if(iniString[i]==currentChar):
                num+=1;
            else:
                currentChar=iniString[i];
                result+=str(num);
                result+=currentChar
                num=1;
        i+=1;
    result+=str(num);
    if(len(result)<len(iniString)):
        return result;
    else:
        return iniString;
```

2. 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。

方法:遍历,发现不同就跳出循环,return false

```
def checkDifferent(iniString):
    i=0;
    while i<len(iniString):
        j=0;
        while j<len(iniString) and (iniString[j]!=iniString[i] or i==j):
            j+=1;
        if(j!=len(iniString)):
            break;
        i+=1;

    if i!=len(iniString) :
       return False;
    else:
       return True;
```

3.请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。

```
def reverseString(iniString):
    i=0;
    if(len(iniString)%2==0):
        tag=len(iniString)/2;
    else:
        tag=int(len(iniString)/2)+1;
    while(i<tag):
        temp=iniString[i];
        t=len(iniString)-1-i;
        if(i==0):
            iniString=iniString[t]+iniString[1:];
            iniString=iniString[:len(iniString)-1]+temp;
        else:
            iniString=iniString[0:i]+iniString[t]+iniString[i+1:];
            iniString=iniString[0:t]+temp+iniString[t+1:];
        i+=1;
    return iniString;
```

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:最近面试遇到的算法编程笔试题目

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share