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);

  • 相关阅读:
    Android中Scrollview、ViewPager冲突问题汇总(已解决)
    Android 关于ZXing的使用
    startActivityForResult用法详解
    SVN的使用(服务端与客户端)
    Genymotion安装常见问题
    Android Viewpager实现图片轮播(仿优酷效果)
    Android Shape 详解
    Android apktool反编译资源文件为空解决办法(测试天猫、淘宝等apk成功)
    查看CentOS版本
    新建git仓库并与github同步
  • 原文地址:https://www.cnblogs.com/Songxin/p/3544928.html
Copyright © 2011-2022 走看看