翻转数值
输入1234 输出4321
输入-1234 输出-4321
要求实现判断:输入数为-2^(32-1)~2^(32-1)-1,翻转数-2^(32-1)~2^(32-1)-1,在此范围输出翻转数,否则提示溢出.
实现:法一取余放入队列,取出队首乘倍数实现翻转
#include<iostream>
#include<queue>
using namespace std;
int dealFuntion(long long input);
long long mypow(int n);
int main(int argc, char* argv[])
{
long long a=0;
cout<<"输入需要翻转的数值:"<<endl;
cin>>a;
int b=dealFuntion(a);
cout<<"翻转的数值为:"<<endl;
cout<<b<<endl;
return 0;
}
int dealFuntion(long long input)
{
if(input>2147483647||input<-2147483648)
{
cout<<"输入数溢出"<<endl;
return 0;
}
queue<int> s1;
long long i=0;
int j=0;
int symbol=1;
int count=0;
long long res;
long long tmp;
if(input ==0)
{
return 0;
}
tmp=input;
if(input<0)
{
symbol=-1;
tmp=-input;
}
if(tmp%10!=0)
{
for(i=1;(j=(tmp/i)%10)!=0;i=i*10)
{
s1.push(j);
count++;
}
}
else
{
s1.push(0);
count++;
for(i=10;(j=(tmp/i)%10)!=0;i=i*10)
{
s1.push(j);
count++;
}
}
for(;(!s1.empty());s1.pop())
{
int tmp=s1.front();
res=res+tmp*mypow(count-1);
if(res>2147483647)
{
cout<<"翻转数溢出"<<endl;
return 0;
}
count--;
}
return (int)res*symbol;
}
long long mypow(int n)
{
int i=0;
long long res=1;
for(i=1;i<=n;i++)
{
res=10*res;
}
return res;
}
法二:数值转为字符串,翻转字符串,字符串转为数值实现翻转
#include<iostream>
#include<sstream>
#include<algorithm>
#include<string>
#include<stdlib.h>
using namespace std;
string lltostring(long long input);
long long rev_stringtoll(string my_string);
void rev_result(long long input);
int main(int argc, char* argv[])
{
long long input;
cout<<"输入翻转数值"<<endl;
cin>>input;
rev_result(input);
return 0;
}
void rev_result(long long input)
{
long long my_ll;
int symbol=1;
if(input>2147483647||input<-2147483648)
{
cout<<"输入数溢出"<<endl;
return;
}
if(input==0)
{
cout<<"翻转结果为:"<<endl<<"0"<<endl;
return;
}
if(input<0)
{
symbol=-1;
input=-input;
}
my_ll=rev_stringtoll(lltostring(input))*symbol;
if(my_ll>2147483647||my_ll<-2147483648)
{
cout<<"翻转数溢出"<<endl;
}
else
{
cout<<"翻转结果为:"<<endl<<my_ll<<endl;
}
}
long long rev_stringtoll(string my_string)
{
reverse(my_string.begin(),my_string.end());
return strtoll(my_string.c_str(),NULL,10);
}
string lltostring(long long input)
{
stringstream my_stream;
string res_string;
my_stream<<input;
my_stream>>res_string;
return res_string;
}
/*
//实现字符串翻转
char *reverse_str(char *str) {
if(NULL == str) { //字符串为空直接返回
return str;
}
char *begin;
char *end;
begin = end = str;
while(*end != '\0') { //end指向字符串的末尾
end++;
}
--end;
char temp;
while(begin < end) { //交换两个字符
temp = *begin;
*begin = *end;
*end = temp;
begin++;
end--;
}
return str; //返回结果
}
void main() {
char str[] = "123456";
printf(reverse_str(str));
}
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App