• 使用类目删除可变字符串中重复字母的一个算法


    问题:为可变字符串类添加一个检测是不是有重复字母的方法:例如:@“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);

  • 相关阅读:
    再论使用Oracle Instant Client连接Oracle
    再谈业务逻辑架构模式(事务脚本,表模块,活动记录,领域模型)
    业务逻辑架构模式(事务脚本,表模块,活动记录,领域模型)
    .net程序集组成与内存布局
    多参的实现原理
    起点
    Windows1[头文件]
    C++中构造函数、析构函数、拷贝构造函数详解
    PHP 开发工具
    写点东西顺便吐槽(很弱很弱的技术文)
  • 原文地址:https://www.cnblogs.com/Songxin/p/3544928.html
Copyright © 2020-2023  润新知