leetcode17.电话号码的字母组合(C语言)

文章介绍了如何利用回溯法解决一个与字符串相关的组合问题,强调了理解算法思想和掌握C语言语法的重要性。在处理C语言字符串时要注意末尾的,并提到了递归的中止条件。此外,文章还涉及将字符数字转换为整型数字以及如何根据数字找到对应字符串的操作。
摘要由CSDN通过智能技术生成

本题采用回溯法,首先回溯法也是一种暴力法,它是解决n个for循环问题

其实许多算法的思想并不难,难的是理解了这个算法思想之后,要结合你对某个语言语法的熟练掌握,将你的思想用某个语言表达出来是比较难的,这需要你对该语言语法的熟练运用能力,尤其是针对与C语言这种函数库较少的,实现起来对细节的把握尤为严格。

本题与以往的回溯问题的区别,首先我理解题意,题目要求是给定的字符串内有多少个数字,就对应一个组合内有多少个字符,然后一共有多少组合,就是一一对应的关系了。

注意的点: 1.C语言的字符串末尾要以 '\0' 结尾,所以在复制字符串s时,对新定义的字符串大小要设置为 strlen(s)+1 ,并且在末尾要手动赋值 t[ strlen(s) ] = '\0' ;

2. 回溯法一定会用到递归的思想,递归就一定有中止条件,中止条件内一定要有return; 语句

3.将字符串内的数字转换为整形类型的数字,

//将字符数字转换为真的数字

    int n = digits[index] - '0';

 4.对于指针的指针,要用到它数组中某一个字符串的值时,可以先中间定义一个临时的变量保存起来,例如 

char * string[] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};

//找到该数字对应的字符串

    char * letter = string[n];

用字符指针保存该字符串

对于每一个问题,都要看清它返回结果的几种状态,一般分为符合要求的几组解、无解.....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Turing森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值