zoukankan      html  css  js  c++  java
  • 使用类目删除可变字符串中重复字母的一个算法

    问题:为可变字符串类添加一个检测是不是有重复字母的方法:例如:@“abccd”调用这个函数后变成@”abcd”

    思路:1.应用类目(Category)为NSMutableString添加一个方法;

       2.找到字符串中重复字母并删除其中重复字母的算法:

        (1)遍历字符串,提取相邻的字母进行比较;

        (2)通过API提供的方法删除处在较后位置的重复字母;

        (3)注意可变字符串删除字母后字符串长度的变化。

    代码:

    //新建一个NSMutableString类的类目,类目的声明文件

    #import <Foundation/Foundation.h> 

    @interface NSMutableString (DeleteRepeatLetter) 

    // 编写一个删除重复字母的方法

    -(void)deleteRepeate:(NSMutableString *)aMstr; 

    @end

    // 类目的实现文件

    #import "NSMutableString+DeleteRepeatLetter.h" 

    @implementation NSMutableString (DeleteRepeatLetter) 

    -(void)deleteRepeate:(NSMutableString *)aMstr

    {

      // 使用self.length在循环的时候时刻检测字符串的长度

        for (int i = 0; i < self.lngth; i++)

        {

            char p = [aMstr characterAtIndex:i];

            for (int j = i+1; j < self.length; j++)

            {

                char q = [aMstr characterAtIndex:j];

                if (p == q)

                {

                    [aMstr deleteCharactersInRange:NSMakeRange(j, 1)];

                    j--;  // 为保证 j++后指向一致,所以要j--,因为删除字母后后面的字母会往前提

                }

            }

        }

    @end

    // 在主函数中

    #import "NSMutableString+DeleteRepeatLetter.h" // 导入类目

    NSMutableString * str = [NSMutableStringstringWithString:@"aabbccddee"];

        [str deleteRepeate:str];

        NSLog(@"%@",str);

  • 相关阅读:
    Odd sum CodeForces
    Chips CodeForces
    Secrets CodeForces
    Voting CodeForces
    Jury Meeting CodeForces
    Planning CodeForces
    Maxim Buys an Apartment CodeForces
    Chemistry in Berland CodeForces
    Monitor CodeForces
    Four Segments CodeForces
  • 原文地址:https://www.cnblogs.com/Songxin/p/3544928.html
Copyright © 2011-2022 走看看