Objective-C:字符串的反转Reverse
OC中字符串的反转方式可以用两种方式来处理:
第一种:从头到尾取出字符串的每一个字符,然后将其从尾到头添加到可变的字符串中,最后输出即可。
第二种:将OC内部的字符串转换为C语言中的字符串,然后动态分配一个数组,然后将字符串内容拷贝到数组中,进行首尾交换操作。共进行数组长度/2次操作。
方式一:OC版本
-(NSMutableString*)Reverse
{
NSUInteger length = [self length];
NSMutableArray *array = [NSMutableArray arrayWithCapacity:length]; for(long i=length-; i>=; i--)
{
unichar c = [self characterAtIndex:i];
[array addObject:[NSString stringWithFormat:@"%c",c]];
} NSMutableString *str = [NSMutableString stringWithCapacity:length];
for(int i=; i<=length-; i++)
{
[str appendString:array[i]];
}
return str;
}@end
方式二:C语言版本
@implementation NSString (Reverse)
-(NSMutableString*)Reverse
{
const char *str = [self UTF8String];
NSUInteger length = [self length];
char *pReverse = (char*)malloc(length+);//动态分配空间
strcpy(pReverse, str);
for(int i=; i<length/; i++)
{
char c = pReverse[i];
pReverse[i] = pReverse[length-i-];
pReverse[length-i-] = c;
}
NSMutableString *pstr = [NSMutableString stringWithUTF8String:pReverse];
free(pReverse);
return pstr;
}
@end
主函数测试:
// main.m
// 字符串的反转
//
// Created by ma c on 15/8/18.
// Copyright (c) 2015年. All rights reserved.
// #import <Foundation/Foundation.h>
#import "NSString+Reverse.h"
int main(int argc, const char * argv[])
{
@autoreleasepool
{
NSMutableString *string = [NSMutableString stringWithFormat:@"XYQ-CHINA"];
NSString *str = [NSString stringWithString:[string Reverse]];
NSLog(@"%@",str);
}
return ;
}
测试结果如下:
-- ::56.696 字符串的反转[:] ANIHC-QYX
Program ended with exit code:
Objective-C:字符串的反转Reverse的更多相关文章
- Python字符串倒序-7. Reverse Integer
今天做了下LeetCode上面字符串倒序的题目,突然想Python中字符串倒序都有哪些方法,于是网上查了下,居然有这么多种方法: 个人觉得,第二种方法是最容易想到的,因为List中的reverse方法 ...
- Codeforces Round #367 (Div. 2) A B C 暴力 二分 dp(字符串的反转)
A. Beru-taxi time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- C# 字符串 分割 反转 Base64
"; //字符串 ToBase64 byte[] bytes = Encoding.Default.GetBytes(pwd); pwd = Convert.ToBase64String(b ...
- 将一个字符串进行反转:将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”
将一个字符串进行反转:将字符串中指定部分进行反转.比如"abcdefg"反转为"abfedcg"方式一:转换为char[] public String reve ...
- Table.ReverseRows反转…Reverse…(Power Query 之 M 语言)
数据源: 任意五行两列 目标: 将原排列顺序颠倒 操作过程: [转换]>[反转行] M公式: = Table.ReverseRows( 表 ) 扩展: 反转列表:= List.Reverse( ...
- 【算法训练营day8】LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58-II. 左旋转字符串
[算法训练营day8]LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58- ...
- Objective的字符串拼接 似乎没有Swift方便,但也可以制做一些较为方便的写法
NSString *str1 = @"字符串1"; NSString *str2 = @"字符串2"; //在同样条件下,Objective的字符串拼接 往往只 ...
- Java实现一个字符串的反转
Java小程序实现字符串的反转: 方法一: public class reverseString { public static void main(String[] args) { String s ...
- 判断A字符串是B字符串的反转
先将其中一个字符串进行反转操作,然后两个字符串进行判断. 1.反转 /** * 字符串反转 * @param str * @return */ private static String conver ...
随机推荐
- Dubbo中多注册中心问题与服务分组
一:注册中心 1.场景 Dubbo 支持同一服务向多注册中心同时注册, 或者不同服务分别注册到不同的注册中心上去, 甚至可以同时引用注册在不同注册中心上的同名服务. 2.多注册中心注册 中文站有些服务 ...
- Ionic入门七:ionic tab(选项卡)
ionic tab(选项卡) 是水平排列的按钮或者链接,用以页面间导航的切换.它可以包含文字和图标的组合,是一种移动设备上流行的导航方法. 1.基本用法 以下选项卡容器使用了 tabs 类,每个选项卡 ...
- caffe for python
导言 本教程中,我们将会利用Caffe官方提供的深度模型——CaffeNet(该模型是基于Krizhevsky等人的模型的)来演示图像识别与分类.我们将分别用CPU和GPU来进行演示,并对比其性能.然 ...
- java 代理设计模式
首先代理(deleration)是什么,在日常生活中我们有很多这种的例子,比如你上个QQ,各种空间被什么代理刷屏,对的,代理不是生产产品的商家,也不是进购产品的卖家,他们只是帮别人卖东西,这就相当于一 ...
- 洛谷——P2756 飞行员配对方案问题
P2756 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其 ...
- Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型
Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型 认识Highmaps Highmaps是Highcharts的姊妹框架,用来实现地图图表.它完全使用Javascript ...
- virtualenv虚拟环境安装不同版本的django
在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目录下. 如果我们要同时开发多个应用程序,那这 ...
- 2017-2018-1 JAVA实验站 第八周作业
2017-2018-1 JAVA实验站 第八周作业 详情请见团队博客
- 认识javascript中的作用域和上下文
javascript中的作用域(scope)和上下文(context)是这门语言的独到之处,这部分归功于他们带来的灵活性.每个函数有不同的变量上下文和作用域.这些概念是javascript中一些强大的 ...
- HDOJ 4414 Finding crosses 暴力!
Finding crosses Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...