描述
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
数据范围: 0≤n≤2^30−1
输入描述:
输入一个int整数
输出描述:
将这个整数以字符串的形式逆序输出
示例1
输入:1516000
输出:0006151
示例2
输入:0
输出:0
思路
- 字符串逆序输出。最基本的方式就是从尾到头遍历输出。
代码
Reverser.h
#pragma once
#include <mutex>
class Reverser
{
public:
static Reverser* getInstance();
public:
void reverse();
private:
Reverser() = default;
~Reverser() = default;
private:
static Reverser* instance;
static std::mutex iMutex;
};
Reverser.cpp
#include "Reverser.h"
#include <iostream>
#include <string>
Reverser* Reverser::instance = nullptr;
std::mutex Reverser::iMutex;
Reverser* Reverser::getInstance()
{
std::unique_lock<std::mutex> lock(iMutex);
if (nullptr == instance) {
instance = new Reverser();
}
return instance;
}
void Reverser::reverse()
{
/* input */
int32_t integerNumber = 0;
std::cin >> integerNumber;
/* verify */
if (0 > integerNumber || ((0x1 << 30)-1 < integerNumber)) {
std::cout << "Invalid input" << std::endl;
return;
}
/* toString and reverse */
auto stringNumber = std::to_string(integerNumber);
std::string reversedNumber;
for (auto idx = stringNumber.rbegin(); idx != stringNumber.rend(); idx++) {
reversedNumber += *idx;
}
std::cout << reversedNumber << std::endl;
}
main.cpp
#include "Reverser.h"
int main(int argc, char** argv)
{
auto reverser = Reverser::getInstance();
reverser->reverse();
return 0;
}