每日算法练习题第一篇

感受算法之美,领悟编程真谛!

Posted by LJJ on July 22, 2018

每日算法练习题第一篇

前述:数据结构与算法是计算机应用的基础,也是每一个有趣和富有内涵的工程师基本功,本系列文章旨在记录本小白学习算法的过程以及通过算法和数据结构练习来感受Computer Scince的巨大魅力,吸引着我一直在这上面不断探索摸寻。

注:题目均为转载,大部分来自leetcode–>见 leetcode中文站

栏目分级

通过题目的难度依次从易到难分为三个阶段:

  1. easy
  2. middle
  3. hard

实际演练

step1:

宝石与石头:
给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。

输入: J = "aA", S = "aAAbbbb"
输出: 3
示例 2:

输入: J = "z", S = "ZZ"
输出: 0
注意:
S和J最多含有50个字母。
J中的字符不重复。

解题思路:

  1. 直接用String 里的charAt()方法循环比较S和J里的字符是否相同。
  2. 创建HashSet,将J通过循环add()入集合里,再利用HashSet的contains()方法判断S里的字符是否被生成的HashSet集合包含。

step2:

给你一个有效的 IPv4 地址address,返回这个 IP 地址的无效化版本。
所谓无效化IP 地址,其实就是用"[.]"代替了每个 "."。
示例 1:
输入:address = "1.1.1.1"
输出:"1[.]1[.]1[.]1"
示例 2:
输入:address = "255.100.50.0"
输出:"255[.]100[.]50[.]0"

解题思路:

  1. 用String类的replace()方法将字符替换掉。
  2. 创建StringBuilder类,利用类里的append()方法追加[]符号。

代码地址见:Github-Algorithm