Symmetric Number 求取对称数字

2024-06-05 18:48

本文主要是介绍Symmetric Number 求取对称数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        最近实验室师兄找工作,今天帮师兄做了一道亚马逊中国的在线笔试题。说的是Symmetric Number(对称数字),即给定一个数字,获取大于它且最接近它的对称数字。

        例如,123对应131,12321对应12421。正常要求是C语言实现,可惜本人习惯于JAVA,所以用JAVA写了一段代码,测试通过。代码如下:

public class SymmNum {public static void main(String[] args){System.out.println("对称数字:"+getSymNum("561068369"));}
/*** 获取大于给定数的最接近对称数	* @param n* @return*/public static int getSymNum(String n){System.out.println("给定数字:"+n);ArrayList<Integer> m = getInt(n);String result = "";if(m.size()%2==1){  //奇数位给定数字String s1 = "";String s2 = "";for(int i=(m.size()-1)/2-1;i>=0;i--){s1 = s1 + m.get(i);}System.out.println(s1);for(int i=(m.size()-1)/2+1;i<m.size();i++){s2 = s2 + m.get(i);}System.out.println(s2);if(Integer.parseInt(s1)>Integer.parseInt(s2)){  //前半部分数字倒序值大于后半部分数字值result = getBackward(s1)+m.get((m.size()-1)/2)+s1;}else{if(m.get((m.size()-1)/2)!=9){   //中间位数字不等于9String s11 = "";ArrayList<Integer> i1 = getInt(getBackward(s1));for(int i=0;i<i1.size();i++)s11 = s11 + i1.get(i);result = s11+((m.get((m.size()-1)/2))+1)+getBackward(s11);}else{     //中间位数字等于9String s11 = "";ArrayList<Integer> i1 = getInt(getBackward(s1));for(int i=0;i<i1.size()-1;i++)s11 = s11 + i1.get(i);s11 = s11 + (i1.get(i1.size()-1)+1);result = s11+0+getBackward(s11);}				}}else{   //偶数位给定数字String s1 = "";String s2 = "";for(int i=m.size()/2-1;i>=0;i--){s1 = s1 + m.get(i); //逆序}System.out.println(s1);for(int i=m.size()/2;i<m.size();i++){s2 = s2 + m.get(i);  //顺序}System.out.println(s2);if(Integer.parseInt(s1)>Integer.parseInt(s2)){  //前半部分数字倒序值大于后半部分数字值result = getBackward(s1)+s1;}else{     //前半部分数字倒序值小于后半部分数字值String s11 = "";ArrayList<Integer> i1 = getInt(getBackward(s1));for(int i=0;i<i1.size()-1;i++)s11 = s11 + i1.get(i);s11 = s11 + (i1.get(i1.size()-1)+1);result = s11+getBackward(s11);}}return Integer.parseInt(result);}
/*** 获取整数每一位数字 列表返回	* @param sValue* @return*/public static ArrayList<Integer> getInt(String sValue){ArrayList<Integer> m = new ArrayList<Integer>();int size = sValue.length();for (int i = 0; i < size; i++)m.add(sValue.codePointAt(i) - '0');return m;}
/*** 字符型整数逆序返回	* @param s1* @return*/public static String getBackward(String s1){String s2 = "";ArrayList<Integer> s = getInt(s1);for(int i=s.size()-1;i>=0;i--){s2 = s2 + s.get(i);}return s2;}
}

代码包地址 http://download.csdn.net/detail/u011342532/8018113

这篇关于Symmetric Number 求取对称数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1033875

相关文章

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人

NC 把数字翻译成字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。 现在给一串数字,返回有多少种可能的译码结果 import java.u

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

34465A-61/2 数字万用表(六位半)

34465A-61/2 数字万用表(六位半) 文章目录 34465A-61/2 数字万用表(六位半)前言一、测DC/AC电压二、测DC/AC电流四、测电阻五、测电容六、测二极管七、保存截图流程 前言 1、6位半数字万用表通常具有200,000个计数器,可以显示最大为199999的数值。相比普通数字万用表,6位半万用表具有更高的测量分辨率和更高的测量准确度,适用于精度比较高的测

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

两个长数字相加

1.编程题目 题目:要实现两个百位长的数字直接相加 分析:因为数字太长所以无法直接相加,所以采用按位相加,然后组装的方式。(注意进位) 2.编程实现 package com.sino.daily.code_2019_6_29;import org.apache.commons.lang3.StringUtils;/*** create by 2019-06-29 19:03** @autho

关于字符串转化为数字的深度优化两种算法

最近在做项目,在实际操作中发现自己在VC环境下写的字符串转化为整型的函数还是太过理想化了,或者说只能在window平台下软件环境中运行,重新给大家发两种函数方法: 第一个,就是理想化的函数,在VC环境下充分利用指针的优越性,对字符串转化为整型(同时也回答了某位网友的答案吖),实验检验通过: #include <stdio.h> #include <string.h> int rayatoi(c