剑指Offer面试题:9.打印1到最大的n位数

一题目:打印1到最大的n位数二不考虑大数解法三字符串模拟算法解法解决这个问题需要表达一个大数。最常用也是最容易的方法是用字符串或者数组表达大数。该算法的步骤如下:Step1.把字符串中的

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

一 题目:打印1到最大的n位数

题目:输入数字n,按顺序打印从1到最大的n位十进制。比如输入3,则打印出1、2、3一直到最大的3位数即999。

二 不考虑大数解法

// 打印从1到最大的n位数
void PrintNumbs(int n)
{
    int nMax = 0;
    for (int i = 1;i <= n; i ++)
    {
        nMax = nMax*10 + 9;
    }
    for (int j = 1; j <= nMax; j ++)
    {
        cout << j << endl;
    }
}

三 字符串模拟算法解法

  解决这个问题需要表达一个大数。最常用也是最容易的方法是用字符串或者数组表达大数。该算法的步骤如下:

  Step1.把字符串中的每一个数字都初始化为’0’;

  Step2.每一次为字符串表示的数字加1,再打印出来;

#include "stdio.h"
#include <iostream>
using namespace std;

bool StructNumber(char *pNumber)
{
    int nLen = strlen(pNumber);
    bool bOver = false;
    for (int i = nLen - 1; i >= 0; i --)
    {
        int nSum = pNumber[i] - '0'+ 1;

        if (nSum >= 10)
        {
            if (0 == i)
            {
                bOver = true;
            }
            else
            {
                nSum -= 10;
                pNumber[i]=nSum+'0';
            }
        }
        else
        {
            pNumber[i] = nSum+'0';
            break;
        }
    }

    return bOver;
}

void PrintCount_1(char *pNumber)
{
    bool bIsBegin = true;
    int nLen = strlen(pNumber);
    for(int i =0;i < nLen; i ++)
    {
        if (bIsBegin && pNumber[i] != '0')
        {
            bIsBegin = false;
        }
        if (!bIsBegin)
        {
            cout << pNumber[i];
        }
    }
    cout << " ";
}

void PrintCount(int n)
{
    char *cNumber = new char[n+1];
    memset(cNumber, '0', n);
    cNumber[n] = '\0';
    int nLen = strlen(cNumber);

    while(!StructNumber(cNumber))
    {
        PrintCount_1(cNumber);
    }
    delete[] cNumber;
}

void main()
{
    PrintCount(3);
    return;
}

 剑指Offer面试题:9.打印1到最大的n位数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120166.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MyBatis+Spring+SpringMVC框架面试题整理(一)

    MyBatis+Spring+SpringMVC框架面试题整理(一)目录■SpringMVC的工作原理■谈谈你对SpringMVC的理解■SpringMVC常用注解都有哪些?■Spring的常用注解■如何开启注解处理器和适配器?■​​​​​​​如何解决get和post乱码问题?■​​​​​​​谈谈你对Spring的理解■​​​​​​​Spring中的设计模式(解释)■​​​​​​​简…

    2022年5月2日
    43
  • FileZilla出现Failed to convert command to 8 bit charset

    FileZilla出现Failed to convert command to 8 bit charset

    2021年10月7日
    50
  • iOS关于地图定位基础(二)[通俗易懂]

    iOS关于地图定位基础(二)[通俗易懂]在前一篇文章 iOS关于地图定位基础(一) 中我们主要总结了 iOS里面利用原生 CoreLocation 框架实现基本定位功能和一些注意点,侧重点主要是iOS8+之后的定位授权与授权状态的使用。接下来本篇文章主要是讲解如何利用 CoreLocation 框架实现地理定位的具体实现。(PS:下文涉及我自定义的指南针Demo请去我的GitHub仓库查看源码https://github.com/IML

    2022年7月26日
    5
  • 一张色环图教你搞定配色_24色环颜色调配图

    一张色环图教你搞定配色_24色环颜色调配图一张色环图教你搞定配色!不管是在平面设计或网页制作中,还是在平常生活中的衣服穿搭和室内装潢中,要想打造出非凡的视觉效果,合理的颜色搭配非常重要。下面介绍几种色彩搭配方案供您参考,让你轻易地一靶中的

    2022年8月1日
    7
  • java https pfx证书_httpclient https通过加载pfx证书获取数据

    java https pfx证书_httpclient https通过加载pfx证书获取数据httpclienthttps通过加载pfx证书获取数据(2015-05-0716:45:16)androidhttps通过加载pfx证书获取数据:http://www.devba.com/index.php/archives/5685.htmlRuntimeconfigurationofSSL/TLShttpclientonAndroidwithclientauthent…

    2022年6月1日
    60
  • CouchBase_couchbase数据库

    CouchBase_couchbase数据库1.CouchBase是什么简单来说CouchBase是一款开源的,分布式的nosql数据库,主要用于分布式缓存和数据存储领域。能够通过managecache提供快速的亚毫米级别的k-v存储操作,

    2022年8月2日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号