首页 > 编程语言 >【每周例题】力扣 C++ 最小和分割

【每周例题】力扣 C++ 最小和分割

时间:2024-04-22 20:36:56浏览次数:27  
标签:num1 num2 int C++ 力扣 len2 num 例题 string

最小和分割

题目

 题目分析

1.num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。即,num1与num2是从num中提取出来的,且不会重复提取同一个数字,且提取的顺序并不需要按照num的数字顺序

2.返回 num1 和 num2 可以得到的和的最小值。要想得到最小值,需要满足下面的条件:

  • num1与num2之间相差的长度不能大于1.

3.这边的思路是:

  • 将num转为字符串,然后使用sort函数对num进行排序
  • 遍历num,将num每个数交错加入num1与num2,即:
for (int i = 0; i < s.length(); i++)
      {
          if (i % 2 == 0)
          {
              num1 += s[i];
          }
          else
          {
              num2 += s[i];
          }
      }
  • 最后再将num1与num2转化为int
  • 最后返回相加的值

代码

普通代码

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int num;
	cin >> num;

	string s = to_string(num);
	string num1, num2;

	sort(s.begin(), s.end());
	for (int i = 0; i < s.length(); i++)
	{
		if (i % 2 == 0)
		{
			num1 += s[i];
		}
		else
		{
			num2 += s[i];
		}
	}

	int len1 = stoi(num1);
	int len2 = stoi(num2);

	return len1 + len2;
}

力扣代码

class Solution {
public:
    int splitNum(int num) 
    {
        string s = to_string(num);
        string num1, num2;

        sort(s.begin(), s.end());
        for (int i = 0; i < s.length(); i++)
        {
            if (i % 2 == 0)
            {
                num1 += s[i];
            }
            else
            {
                num2 += s[i];
            }
        }

        int len1 = stoi(num1);
        int len2 = stoi(num2);

        return len1 + len2;
    }
};

  

标签:num1,num2,int,C++,力扣,len2,num,例题,string
From: https://www.cnblogs.com/hcrzhi/p/18151445

相关文章

  • C++八股之函数重载与重写-静态多态与动态多态
    重载:是指在同一作用域中允许存在多个同名函数,⽽这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。重载与类无关,重载实现编译时多态,属于静态绑定。重写:指⼦类新定义⽗类的函数的做法。如果重写的函数在父类中是虚函数,那么能够实现动态多态。如果在父类中没......
  • UE4纯C++实现游戏中快捷栏之创建快捷栏UI
    作为一个在游戏界面中显示的快捷栏,我们需要在游戏运行时就显示出快捷栏UI,故我们创建两个Widget。1.SlAiGameHUDWidget:负责游戏中界面UI的整体显示2.SlAiShortcutWidget:负责快捷栏部件的显示与逻辑然后我们通过:1.将GameHUDWidget添加进视口:在GameHUD文件中添加Game......
  • 深度解读《深度探索C++对象模型》之数据成员的存取效率分析(三)
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。前面两篇请通过这里查看:深度解读《深度探索C++对象模型》之数据成员的存取效率分析(一)深度解读《深度探索C++对象模型》之数据成员的......
  • C++ 上位软件通过Snap7开源库访问西门子S7-1200/S7-1500数据块的方法
    前言本人一直从事C++上位软件开发工作较多,在之前的项目中通过C++访问西门子PLCS7-200/S7-1200/S7-1500并进行数据交互的应用中一直使用的是ModbusTCP/ModbusRTU协议进行。Modbus上位开源库采用的LibModbus。经过实际应用发现Modbus开源库单次发送和接受的数据不能超......
  • C++ 连接pg数据库
    环境:windows10vs2022引入pqxxs一些增删改查的示例代码#include"pqxx/pqxx"voidinsertPg(){try{//建立连接pqxx::connectionconn("dbname=postgresuser=postgrespassword=123hostaddr=127.0.0.1port=5432");//添加数据......
  • 力扣周赛394之别样DP + 别样Dijkstra
    别样DP题目链接https://leetcode.cn/problems/minimum-number-of-operations-to-satisfy-conditions/description/题目大意题目思路需要考虑m列每一列填什么的情况,因为最终每一列都是一样的考虑暴力,每一列都可以变成0-9有\(10^m\)次种情况,这必然是不可行的我们从前往......
  • 关于c++输入输出缓冲区,和IO加速流的一些理解
    首先,让我们来介绍一下这个函数ios::sync_with_stdio();这个函数在缺省状态下默认为true,即开启,这个函数的作用是同步c和c++的缓冲区这个操作是c++为了兼容c而做出的保守决定,即将c和c++的缓冲区合并为一个,但是这样会带来性能上的开销为什么呢?因为这个兼容缓冲区先执行c的输入输......
  • C与C++的内存管理
    C中的malloc/relloc/calloc/free1.malloc与freemalloc函数用于分配指定大小的内存空间,并返回空间的首地址,若分配失败则返回NULL。free用来释放已分配的内存空间。intmain(){ int*ptr=(int*)malloc(sizeof(int)*10);//分配十个int型的空间 if(ptr==NULL){ pr......
  • C++U7-1-高精度加减
    学习目标    高精度加法        [高精度加法] #include<bits/stdc++.h>usingnamespacestd;intmain(){stringa;stringb;intc[10089]={0};intd[10089]={0};inte[10089]={0};cin>>a>>b;in......
  • 《Effective C++》读书笔记
    《EffectiveC++》读书笔记之前看过一遍,不过草草了事。近日看了《深度探索C++对象模型》,想起《EffectiveC++》中的内容已经有些忘记了,所以重新温习一下。这篇笔记只挑选书中的一些重要内容进行记录。条款07:为多态基类声明virtual析构函数这一个条款几乎是面试中的高频问题,只需......