找出最大数字串

一组同学中每个人有一张卡片,卡片上有一个数字该数字不超过6位 ,输入每个卡片上的数字,求他们能组成的最大的数字串。

例如:

输入45,9,813
输出 981345

思路:

比较两个数字字符串大小,如果str1+str2 组合过后的串大于等于str2+str1,那么认为str1是大于str2的;然后进行列表的排序,越大的排在前面。

import sys

def judgeStr(str1, str2):
    sum_1 = str1 + str2
    sum_2 = str2 + str1
    if sum_1 >= sum_2:
        return True
    else:
        return False


def biggestNum(list_str):
    for i in range(len(list_str)):
        for j in range(len(list_str)):
            if j > i:
                if judgeStr(list_str[i], list_str[j]) == False:
                    list_str[i], list_str[j] = list_str[j], list_str[i]
    print(''.join(list_str))

str = sys.stdin.readline().strip()
list_str = str.split(',')
biggestNum(list_str)

 

在不同的编程语言中,从一串输入数字中找出最大数有不同的实现方法,以下为你介绍几种常见的实现方式: ### C语言实现 ```c #include <stdio.h> int main() { int n; // 输入数字的数量 scanf("%d", &n); int max = 0; int num; for(int i = 0; i < n; i++) { // 逐个输入数字 scanf("%d", &num); if(i == 0 || num > max) { max = num; } } printf("The maximum number is %d.\n", max); return 0; } ``` 这种方法通过循环输入数字,并在每次输入时比较更新最大值,最终输出最大数,与引用[1]中找出n个数中最大数的思路一致。 ### Python实现 ```python nums = list(map(int, input().split())) print(max(nums)) ``` 此代码将输入的数字按空格分割并转换为整数列表,然后使用Python内置的`max`函数直接找出最大数。 ### Java实现 ```java import java.util.Scanner; import java.util.ArrayList; import java.util.Collections; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String[] strs = scan.nextLine().split(" "); ArrayList<Integer> arr = new ArrayList<>(); for(String s : strs) { arr.add(Integer.parseInt(s)); } System.out.println(Collections.max(arr)); } } ``` 该Java代码通过`Scanner`获取输入,将输入按空格分割后转换为整数列表,再使用`Collections.max`方法找出最大数,与引用[4]中处理输入字符串并找出最大数字的思路有相似之处。 ### C++实现 ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin >> n; vector<int> nums(n); for(int i = 0; i < n; i++) { cin >> nums[i]; } int max_num = *max_element(nums.begin(), nums.end()); cout << max_num << endl; return 0; } ``` 此C++代码使用`vector`存储输入的数字,通过`max_element`函数找出最大数。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值