iOS 大数相加

ops/2024/10/22 7:56:36/

大数相加的技术点在于进位(两数相加大于10之后进位)

思路如下:

1.从右往左便利,依次去除两个数M和N的个位数、十位数、百位数~~~相加

2.如果M遍历完了,N还没完,那么M用0作为位数上的加数:

代码如下:

- (void)bigNumAdd:(NSMutableArray *)arrayA ArrayB:(NSMutableArray *)arrayB
{NSString * resString = @"";//倒叙循环int i = (int)arrayA.count - 1;int j = (int)arrayB.count - 1;//进位.两个数相加,大于10会进一位, 它的值只能是1或0int carry = 0;while (i >= 0 || j >= 0){//往右遍历,依次先取出个位数、十位数、百位数……/*三目运算法,如果i大于等于0,说明arrayA里还有值没遍历,如果arrayA里没有值了就直接赋0arrayA = [1,2,3],arrayB = [4,5,6,7], 遍历到第4遍,i=-1,j = 0,所以此时num1=0*/int num1 = i >= 0 ? [arrayA[i] intValue] : 0;int num2 = j >= 0 ? [arrayB[j] intValue] : 0;int sum = num1 + num2 + carry;if (sum >= 10){//两数相加,大于10,需保留个位数,向前进一位sum -= 10;carry = 1;}else{carry = 0;}resString = [NSString stringWithFormat:@"%d%@",sum,resString];NSLog(@"resString=11=%@",resString);//本次遍历结束之后,需要对i和j往左移动一位i--;j--;}//如果在所有的遍历都结束后,carry 还等于1.说明最后一次加法大于10,向前进1,此时我们还需要再拼接一个1if (carry == 1){resString = [NSString stringWithFormat:@"%d%@",carry,resString];}NSLog(@"最后的结果==%@",resString);
}//调用
- (void)viewDidLoad 
{[super viewDidLoad];NSString * stringA = @"123456";NSString * stringB = @"456789";[self bigNumAdd:[self stringTransArray:stringA] ArrayB:[self stringTransArray:stringB]];
}//将字符串转为数组
- (NSMutableArray *)stringTransArray:(NSString *)str
{NSMutableArray * array = [[NSMutableArray alloc]init];for (int i = 0; i < str.length; i ++){unichar ch = [str characterAtIndex:i];NSString * charStr = [NSString stringWithFormat:@"%C",ch];//添加[array addObject:charStr];}return array;
}


http://www.ppmy.cn/ops/127509.html

相关文章

【网安第三章】——XSS

XSS-跨站脚本攻击 反射型XSS 反射型XSS攻击通常发生在Web应用程序未能充分处理用户输入的情况下。攻击者利用应用程序的漏洞&#xff0c;将恶意脚本嵌入到URL参数中&#xff0c;当受害者点击这个恶意链接时&#xff0c;Web应用程序会将URL参数的内容作为响应的一部分发送给用户…

PyTorch 中 12 种张量操作详解

创作不易&#xff0c;还请各位同学三连点赞&#xff01;&#xff01;收藏&#xff01;&#xff01;转发&#xff01;&#xff01;&#xff01; 对于刚入门学习Python还找不到方向的小伙伴可以试试我的这份学习方法和籽料&#xff0c;免费自取&#xff01;&#xff01; PyTorc…

Ajax:跨域、防抖和节流、HTTP协议

在善意的“双向奔赴”中&#xff0c;每个普通人都如星辰&#xff0c;微小但释放着自己的光芒&#xff0c;交织成灿烂的星河 文章目录 跨域防抖和节流HTTP协议HTP状态码以及代表意义错误代码的影响移动的小天使 跨域 同源策略 概念&#xff1a;协议&#xff0c;域名&#xff0c…

Go的客户端与服务器通信案例

客户端代码 package main import ("fmt""net""os""bufio" )func main(){fmt.Println("客户端启动……")conn,err:net.Dial("tcp","127.0.0.1:8888")if err!nil{fmt.Println("客户端连接服务器失败…

WEB前端使用标签制作网页

需要使用HTML的一些基本标签制作网页 基本代码如下: <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><form action"#" method"post" enctype"text/…

大数据-178 Elasticsearch Query - Java API 索引操作 文档操作

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

git 免密的方法

方法一&#xff1a; 通过生成credential配置 git config --global credential.helper store 查看.gitconfig文件&#xff0c;发现多了一行 [credential] helper store 方法二&#xff1a; 修改仓库中.git/config文件 url http://账号:密码git.test.com.cn/test/xx.git或者带…

动态规划-子数组系列——413.等差数列划分

1.题目解析 测试用例&#xff1a;413.等差数列划分——力扣 测试用例 2.算法原理 1.状态表示 dp[i]:以第i个位置为结尾的子数组中等差数列的个数 2.状态转移方程 当遇到新的数可以与原来的等差数列构成等差数列说明此时多了一种等差数列的情况则dp[i]dp[i-1]1;反之不能构成等…