0
点赞
收藏
分享

微信扫一扫

1903. 字符串中的最大奇数

宁静的猫 2022-02-08 阅读 69

地址:

力扣icon-default.png?t=M0H8https://leetcode-cn.com/problems/largest-odd-number-in-string/submissions/

题目:

给你一个字符串 num ,表示一个大整数。请你在字符串 num 的所有 非空子字符串 中找出 值最大的奇数 ,并以字符串形式返回。如果不存在奇数,则返回一个空字符串 "" 。

子字符串 是字符串中的一个连续的字符序列。

示例 1:

输入:num = "52"
输出:"5"
解释:非空子字符串仅有 "5"、"2" 和 "52" 。"5" 是其中唯一的奇数。


示例 2:

输入:num = "4206"
输出:""
解释:在 "4206" 中不存在奇数。


示例 3:

输入:num = "35427"
输出:"35427"
解释:"35427" 本身就是一个奇数。

提示:

1 <= num.length <= 105
num 仅由数字组成且不含前导零

思路:

奇数即个位是奇数,至于最大嘛,就是把前面的数看作一体(如果有前面的数)

所以题目就很简单,倒序查找奇数,如果发现,就正向拷贝

方法一、倒序查找奇数出现的位置

char odd[100001];

char * largestOddNumber(char * num){
	int slen = strlen(num);
	
	memset(odd, 0, sizeof(char));
	odd[105] = '\0';
	
	for(int i=slen-1, j=0; i>=0; i--, j++)
	{
		int ch = num[i] - '0';
		if(ch & 1)
		{
			strncpy(odd, num, slen - j);
			odd[slen-j]='\0';
            break;
		}
	}
	
	return odd;
}

查看更多刷题笔记

举报

相关推荐

0 条评论