2019独角兽企业重金招聘Python工程师标准>>>

1、翻转字符串

function reverseString(str) {return str.split('').reverse().join('');
}
reverseString("hello");

2、阶乘算法

public static int factorialize(int num) {if (num <= 1) {return 1;
    } else {return num * factorialize(num-1);
    }}public static void main(String[] args) {System.out.println(factorialize(5));
}

3、回文算法

一、回文数

题目描述

判断一个正整数是不是回文数。 回文数的定义是,将这个数反转之后,得到的数仍然是同一个数。

样例

11, 121, 1, 12321 这些是回文数。 23, 32, 1232 这些不是回文数。

解法

依次对num取余,采用临时参数reverse 记录转化后的数字,最后对比reverse与num是否相等即可

public boolean palindromeNumber(int num) {int reverse = 0,temp = num;while(temp>0){//  temp%10 取余 temp/10 取整reverse = reverse*10+temp%10;temp = temp/10;}return reverse==num;}

二、回文字符串

题目描述

给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。 ###样例 "A man, a plan, a canal: Panama" 是一个回文。 "race a car" 不是一个回文。 ###解法 1、根据题目描述,只包含字母和数字,需要踢除空格,标点符号等特殊符号,并且统一需要将字符串转为大写或者小写

踢除空格,标点符号等特殊符号:我采用正则表达式:

s=s.replaceAll("\\pP|\\pS|\\pZ", "")

说明: Unicode 编码并不只是为某个字符简单定义了一个编码,而且还将其进行了归类。 /pP 其中的小写 p 是 property 的意思,表示 Unicode 属性,用于 Unicode 正表达式的前缀。 大写 P 表示 Unicode 字符集七个字符属性之一:标点字符。 其他六个是 L:字母; M:标记符号(一般不会单独出现); Z:分隔符(比如空格、换行等); S:符号(比如数学符号、货币符号等); N:数字(比如阿拉伯数字、罗马数字等); C:其他字符

2、回文的定义是一个字符串顺着读和反着读都是一样的字符串,解法有很多,我这里提供一种 将字符串转为数组,记录头地址front和尾地址end,向中间扫描,front>end,结束扫描。

public boolean isPalindrome(String s) {if (s == null) {return false;}s = s.replaceAll("\\pP|\\pS|\\pZ", "").toLowerCase();char[] arr = s.toCharArray();int front = 0, end = arr.length - 1;while (front < end) {if (arr[front++] != arr[end--]) {return false;}}return true;}

三、回文链表

题目描述

设计一种方式检查一个链表是否为回文链表 ###样例 1->2->1 就是一个回文链表。

解法

解法我这里有两中思路,一种是把整个链表反转,逐个比较,这个可能性能偏差,一种是找到链表的中间位置,反转中间节点之后的链表,然后和整个链表对比,如果 中间位置的链表到结尾了,说明该链表是回文链表,第一种相对比较简单,我这里提供第二种解法

/*** 定义链表类**/class ListNode{int val;ListNode next;ListNode(int x){val = x;}}/*** @param head a ListNode* @return a boolean*/public boolean isPalindrome(ListNode head) {if(head==null){return true;}//找到中间节点ListNode middle = findMiddle(head);//对中间节点之后的节点进行反转,重新赋值给middle链表,middle= reverse(middle.next);//两个链表的长度不一样,但是middle的节点比较少,也就是middle会先结束循环,如果middle.next还有节点就跳出循环,说明该链表不是回文链表,反之是回文链表。while(head!=null&&middle!=null&&head.val==middle.val){head = head.next;middle = middle.next;}return middle==null;}// 找到两个链表的中间节点//当链表长度为奇数时,slow刚好是链表中间节点。fast在最后一个节点 。当链表长度为偶数时,slow的节点刚好到中间节点的前一个节点。fast在倒数第二个节点。slow.next就是下一个链表的头结点。public  ListNode findMiddle(ListNode head){if(head==null){return null;}ListNode slow = head,fast = head.next;while(fast!=null&&fast.next!=null){slow = slow.next;fast = fast.next.next;}return slow;}//反转链表public  ListNode reverse(ListNode head){ListNode prev = null,temp = null;while(head!=null){temp = head.next;head.next = prev;prev = head;head = temp;}return prev;}

花了好几个小时,终于写完了,撸起袖子就是干!

转载于:https://my.oschina.net/inchlifc/blog/1591373

java简单算法总结相关推荐

  1. java简单算法_java实现简单算法(一)

    问题描述:梯有N阶,上楼可以一步上一阶,也可以一步上二阶.编写一个程序,计算共有多少中不同的走法 解题思路:本题来源于网络,解决方法也是比较简单,纯当练手.本人仅采用递归思想,引用他人方法,用java ...

  2. 约瑟夫问题的java简单算法

    // 约瑟夫环问题 package com.neusoft; import java.util.Iterator; import java.util.Vector; public class Jose ...

  3. JAVA 判断简单密码算法_十道简单算法题二【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  4. java的简单算法题_[2]十道算法题【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  5. java基础算法题(入门题与简单题)

    题目来自lintcode,答案来自九章算术,将自己在lintcode上训练的一些简单算法题贴出来,作为知识的总结与整理.便于查看复习. 第一部分(入门级别,只做了开放的部分,大部分需要收费的VIP才有 ...

  6. 十道简单算法题二【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  7. java循环左一_java实现循环左移和右移的简单算法

    java实现循环左移和右移的简单算法 byte a=112,用程序实现,将其循环左移三位和右移三位. 112的二进制原码:0111 0000 112循环左移3位后的二进制码:1000 0011 112 ...

  8. java十进制转二进制简单算法

    Java十进制转二进制简单算法 一.编程思路 可以运用简单的数学的计算的方法.如下 这张图大家应该都不陌生,10(例子中的10)一直除以2,余数写在右面那一列,如果被整除右面写0,如果没有别整除,写他 ...

  9. Java简单实现DES加密解密算法

    Java简单实现DES加密解密算法 文章目录 Java简单实现DES加密解密算法 DES算法介绍 实现相关java类 代码实现 DES算法介绍 DEC加密算法属于对称加密,即利用指定的密钥,按照密码的 ...

最新文章

  1. android11和ios,安卓与iOS细节对比:Reno Ace与iPhone 11 Pro Max,结果很意外
  2. 计算机有什么知识,计算机基础知识有什么
  3. jmap在ubuntu上DebuggerException: Can't attach to the process
  4. 微型计算机及接口技术试题,1月自考微型计算机及其接口技术试题及答案解析...
  5. java改变变量编码方式_Java 8中的5个功能将改变您的编码方式
  6. axios get post下载文件
  7. 谷歌、DeepMind提出高效Transformer评估基准
  8. 沈向洋、王海峰候选中国工程院院士!计算机领域7位入围增选
  9. 两个服务器 文件比较,使用linux的comm命令比较两个已排过序的文件
  10. 文档 hbase_0783-6.2.0-如何在Hue中集成HBase
  11. 送给初学.net兄弟们的一些话
  12. LeetCode-151 Reverse Worlds in a String
  13. 【短评】街边小吃虽然味道不错,但是长期只吃零食不吃正餐会让你的孩子营养不良...
  14. Combine的使用案例
  15. npm ERR! code EINTEGRITY 解决方案
  16. EPS学习笔记2----------常用地物绘制基础
  17. 黑帽SEO必须掌握的四种暗链代码
  18. 成都“小甜甜”:她给了男人希望,男人却被嘲笑X丝
  19. 如何暴力破解wifi密码
  20. 优惠券管理--优惠券类型

热门文章

  1. 灰度实战(三):Apollo配置中心(3)
  2. 机房收费系统个人重构版:暮然回首,灯火阑珊
  3. 雷军振臂一呼:1亿小爱同学激活是不是中国第一?百度硬刚:我才是
  4. 翻滚吧,水瓶君!全日本高中生机器人大赛,“超自然”力量制霸全场
  5. 用keepalived配置高可用,监控NGINX服务
  6. TensorFlow教程之API DOC 6.1.1Class tensorflow::Env
  7. 【App 支付】交易查询接口
  8. Android检测网络是否正常代码!
  9. 浅谈CIVIL 3D
  10. BI开发之——ETL注意细节