Top 10 Algorithms for Coding Interview

transferred from:

The following are top 10 algorithms related topics for coding interviews. As understanding those concepts requires much more effort, this list below only serves as an introduction. They are viewed from a Java perspective and the following topics will be covered: String/Array/Matrix, Linked List, Tree, Heap, Graph, Sorting, Recursion vs. Iteration, Dynamic Programming, Bit Manipulation, Probability, Combinations and Permutations, and other problems that need us to find patterns.

1. String/Array/Matrix

First of all, String in Java is a class that contains a char array and other fields and methods. Without code auto-completion of any IDE, the following methods should be remembered.

toCharArray() //get char array of a String
Arrays.sort()  //sort an array
Arrays.toString(char[] a) //convert to string
charAt(int x) //get a char at the specific index
length() //string length
length //array size 
substring(int beginIndex) 
substring(int beginIndex, int endIndex)
Integer.valueOf()//string to integer
String.valueOf()/integer to string

Strings/arrays are easy to understand, but questions related to them often require advanced algorithm to solve, such as dynamic programming, recursion, etc.

Classic problems:
1) Evaluate Reverse Polish Notation
2) Longest Palindromic Substring
3) Word Break
4) Word Ladder
5) Median of Two Sorted Arrays
6) Regular Expression Matching
7) Merge Intervals
8) Insert Interval
9) Two Sum
9) 3Sum
9) 4Sum
10) 3Sum Closest
11) String to Integer
12) Merge Sorted Array
13) Valid Parentheses
14) Implement strStr()
15) Set Matrix Zeroes
16) Search Insert Position
17) Longest Consecutive Sequence
18) Valid Palindrome
19) Spiral Matrix
20) Search a 2D Matrix
21) Rotate Image
22) Triangle
23) Distinct Subsequences Total
24) Maximum Subarray
25) Remove Duplicates from Sorted Array
26) Remove Duplicates from Sorted Array II
27) Longest Substring Without Repeating Characters
28) Longest Substring that contains 2 unique characters
29) Palindrome Partitioning

2. Linked List

The implementation of a linked list is pretty simple in Java. Each node has a value and a link to next node.

class Node {
	int val;
	Node next;   Node(int x) {
		val = x;
		next = null;

Two popular applications of linked list are stack and queue.


class Stack{
	Node top;   public Node peek(){
		if(top != null){
			return top;
		}   return null;
	}   public Node pop(){
		if(top == null){
			return null;
			Node temp = new Node(top.val);
			top =;
			return temp;	
	}   public void push(Node n){
		if(n != null){ = top;
			top = n;


class Queue{
	Node first, last;   public void enqueue(Node n){
		if(first == null){
			first = n;
			last = first;
		}else{ = n;
			last = n;
	}   public Node dequeue(){
		if(first == null){
			return null;
			Node temp = new Node(first.val);
			first =;
			return temp;

It is worth to mention that Java standard library already contains a class called “Stack“, and LinkedListcan be used as a Queue (add() and remove()). (LinkedList implements the Queue interface) If you need a stack or queue to solve problems during your interview, you can directly use them.

Classic Problems:
1) Add Two Numbers
2) Reorder List
3) Linked List Cycle
4) Copy List with Random Pointer
5) Merge Two Sorted Lists
6) Merge k Sorted Lists *
7) Remove Duplicates from Sorted List
8) Partition List
9) LRU Cache

3. Tree & Heap

Tree here is normally binary tree. Each node contains a left node and right node like the following:

class TreeNode{
	int value;
	TreeNode left;
	TreeNode right;

Here are some concepts related with trees:

  1. Binary Search Tree: for all nodes, left children <= current node <= right children
  2. Balanced vs. Unbalanced: In a balanced tree, the depth of the left and right subtrees of every node differ by 1 or less.
  3. Full Binary Tree: every node other than the leaves has two children.
  4. Perfect Binary Tree: a full binary tree in which all leaves are at the same depth or same level, and in which every parent has two children.
  5. Complete Binary Tree: a binary tree in which every level, except possibly the last, is completely filled, and all nodes are as far left as possible

Heap is a specialized tree-based data structure that satisfies the heap property. The time complexity of its operations are important (e.g., find-min, delete-min, insert, etc). In Java, PriorityQueue is important to know.

Classic problems:
1) Binary Tree Preorder Traversal
2) Binary Tree Inorder Traversal
3) Binary Tree Postorder Traversal
4) Word Ladder
5) Validate Binary Search Tree
6) Flatten Binary Tree to Linked List
7) Path Sum
8) Construct Binary Tree from Inorder and Postorder Traversal
9) Convert Sorted Array to Binary Search Tree
10) Convert Sorted List to Binary Search Tree
11) Minimum Depth of Binary Tree
12) Binary Tree Maximum Path Sum *
13) Balanced Binary Tree

4. Graph

Graph related questions mainly focus on depth first search and breath first search. Depth first search is straightforward, you can just loop through neighbors starting from the root node.

Below is a simple implementation of a graph and breath first search. The key is using a queue to store nodes.


1) Define a GraphNode

class GraphNode{ 
	int val;
	GraphNode next;
	GraphNode[] neighbors;
	boolean visited;   GraphNode(int x) {
		val = x;
	}   GraphNode(int x, GraphNode[] n){
		val = x;
		neighbors = n;
	}   public String toString(){
		return "value: "+ this.val; 

2) Define a Queue

class Queue{
	GraphNode first, last;   public void enqueue(GraphNode n){
		if(first == null){
			first = n;
			last = first;
		}else{ = n;
			last = n;
	}   public GraphNode dequeue(){
		if(first == null){
			return null;
			GraphNode temp = new GraphNode(first.val, first.neighbors);
			first =;
			return temp;

3) Breath First Search uses a Queue

public class GraphTest {   public static void main(String[] args) {
		GraphNode n1 = new GraphNode(1); 
		GraphNode n2 = new GraphNode(2); 
		GraphNode n3 = new GraphNode(3); 
		GraphNode n4 = new GraphNode(4); 
		GraphNode n5 = new GraphNode(5);   n1.neighbors = new GraphNode[]{n2,n3,n5};
		n2.neighbors = new GraphNode[]{n1,n4};
		n3.neighbors = new GraphNode[]{n1,n4,n5};
		n4.neighbors = new GraphNode[]{n2,n3,n5};
		n5.neighbors = new GraphNode[]{n1,n3,n4};   breathFirstSearch(n1, 5);
	}   public static void breathFirstSearch(GraphNode root, int x){
		if(root.val == x)
			System.out.println("find in root");   Queue queue = new Queue();
		root.visited = true;
		queue.enqueue(root);   while(queue.first != null){
			GraphNode c = (GraphNode) queue.dequeue();
			for(GraphNode n: c.neighbors){   if(!n.visited){
					System.out.print(n + " ");
					n.visited = true;
					if(n.val == x)
						System.out.println("Find "+n);


value: 2 value: 3 value: 5 Find value: 5
value: 4

Classic Problems:
1) Clone Graph

5. Sorting

Time complexity of different sorting algorithms. You can go to wiki to see basic idea of them.

Average Time
Worst Time

Bubble sort

Selection sort

Insertion sort

Quick sort
n log(n)

Merge sort
n log(n)
n log(n)

* BinSort, Radix Sort and CountSort use different set of assumptions than the rest, and so they are not “general” sorting methods. (Thanks to Fidel for pointing this out)

Here are some implementations/demos, and in addition, you may want to check out how Java developers sort in practice.
1) Mergesort
2) Quicksort
3) InsertionSort.

6. Recursion vs. Iteration

Recursion should be a built-in thought for programmers. It can be demonstrated by a simple example.


there are n stairs, each time one can climb 1 or 2. How many different ways to climb the stairs?

Step 1: Finding the relationship before n and n-1.

To get n, there are only two ways, one 1-stair from n-1 or 2-stairs from n-2. If f(n) is the number of ways to climb to n, then f(n) = f(n-1) + f(n-2)

Step 2: Make sure the start condition is correct.

f(0) = 0;
f(1) = 1;

public static int f(int n){
	if(n <= 2) return n;
	int x = f(n-1) + f(n-2);
	return x;

The time complexity of the recursive method is exponential to n. There are a lot of redundant computations.

f(4) + f(3)
f(3) + f(2) + f(2) + f(1)
f(2) + f(1) + f(2) + f(2) + f(1)

It should be straightforward to convert the recursion to iteration.

public static int f(int n) {   if (n <= 2){
		return n;
	}   int first = 1, second = 2;
	int third = 0;   for (int i = 3; i <= n; i++) {
		third = first + second;
		first = second;
		second = third;
	}   return third;

For this example, iteration takes less time. You may also want to check out Recursion vs Iteration.

7. Dynamic Programming

Dynamic programming is a technique for solving problems with the following properties:

  1. An instance is solved using the solutions for smaller instances.
  2. The solution for a smaller instance might be needed multiple times.
  3. The solutions to smaller instances are stored in a table, so that each smaller instance is solved only once.
  4. Additional space is used to save time.

The problem of climbing steps perfectly fit those 4 properties. Therefore, it can be solve by using dynamic programming.

public static int[] A = new int[100];   public static int f3(int n) {
	if (n <= 2)
		A[n]= n;   if(A[n] > 0)
		return A[n];
		A[n] = f3(n-1) + f3(n-2);//store results so only calculate once!
	return A[n];

Classic problems:
1) Edit Distance
2) Longest Palindromic Substring
3) Word Break
4) Maximum Subarray

8. Bit Manipulation

Bit operators:

OR (|)
AND (&)
XOR (^)
Left Shift (<<)
Right Shift (>>)
Not (~)


Get bit i for a give number n. (i count from 0 and starts from right)

public static boolean getBit(int num, int i){
	int result = num & (1<<i);   if(result == 0){
		return false;
		return true;

For example, get second bit of number 10.

i=1, n=10
1<<1= 10
10 is not 0, so return true;

Classic Problems:
1) Find Single Number
2) Maximum Binary Gap

9. Probability

Solving probability related questions normally requires formatting the problem well. Here is just a simple example of such kind of problems.

There are 50 people in a room, what’s the probability that two people have the same birthday? (Ignoring the fact of leap year, i.e., 365 day every year)

Very often calculating probability of something can be converted to calculate the opposite. In this example, we can calculate the probability that all people have unique birthdays. That is: 365/365 * 364/365 * 363/365 * … * 365-n/365 * … * 365-49/365. And the probability that at least two people have the same birthday would be 1 – this value.

public static double caculateProbability(int n){
	double x = 1;   for(int i=0; i<n; i++){
		x *=  (365.0-i)/365.0;
	}   double pro = Math.round((1-x) * 100);
	return pro/100;

calculateProbability(50) = 0.97

10. Combinations and Permutations

The difference between combination and permutation is whether order matters.

Example 1:

Given 5 numbers – 1, 2, 3, 4 and 5, print out different sequence of the 5 numbers. 4 can not be the third one, 3 and 5 can not be adjacent. How many different combinations?

Example 2:

Given 5 banaba, 4 pear, and 3 apple, assuming one kind of fruit are the same, how many different combinations?

Class Problems:
1) Permutations
2) Permutations II
3) Permutation Sequence

Some other problems need us to use observations to form rules to solve them:

1) Reverse Integer
2) Palindrome Number
3) Pow(x,n)
4) Subsets
5) Subsets II

You may also like …
  1. 面试10大算法汇总+常见题目解答
  2. LeetCode – Merge k Sorted Lists (Java)
  3. How to answer coding questions for your interview?
  4. Leetcode Solution of Iterative Binary Tree Postorder Traversal in Java

程序员/设计师能用上的 75 份速查表

75 份速查表,由 vikas 收集整理,包括:jQuery、HTML、HTML5、CSS、CSS3、JavaScript、Photoshop 、git、Linux、Java、Perl、PHP、Python、Ruby、Ruby on Rails、Scala、C#、SQLite、C++、C语言、Ubuntu、WordPress、Node.js、Oracle、NMAP、Mac OS X、Haskell、Unicode、PostgreSQL、Lisp、Matlab 等。

  速查表可能是图片,也可能是 PDF 文件,希望你能在这个列表中找到你所需要的。

  1) Cheat Sheets – jQuery

  2) Cheat Sheets – HTML

  3) Cheat Sheets – HTML5 Cheat Sheet

  4) Cheat Sheets – CSS

  5) Cheat Sheets – CSS2

  6) Cheat Sheets – CSS3

  7) Cheat Sheets – JavaScript

  8) Cheat Sheets – Linux

  9) Cheat Sheets –  Java

  10) Cheat Sheets – Java 8

  11) Cheat Sheets – Perl

  12) Cheat Sheets – PHP

  13) Cheat Sheets – Python

  14) Cheat Sheets – Ruby on Rails

  15) Cheat Sheets – Ruby

  16) Cheat Sheets – Scala Cheat sheets

  17) Cheat Sheets – SQL

  18) Cheat Sheets – My SQL

  19) Cheat Sheets – C#

  20) Cheat Sheets – SQLite

  21) Cheat Sheets – C++

  22) Cheat Sheets – Javascript and AJAX

  23) Cheat Sheets – C

  24) Cheat Sheets – Unix

  25) Cheat Sheets – Ubuntu

  26) Cheat Sheets – WordPress

  27) Cheat Sheets – Nodejs

  28) Cheat Sheets –  HTML and XHTML

  29) Cheat Sheets – XML

  30) Cheat Sheets – Oracle

  31) Cheat Sheets – NMAP

  32) Cheat Sheets – Mac OS X

  33) Cheat Sheets – Haskell

  34) Cheat Sheets – DOM

  35) Cheat Sheets – Drupal

  36) Cheat Sheets – Oracle DB

  37) Cheat Sheets – FireFox

  38) Cheat Sheets – Apache Ant

  39) Cheat Sheets – Apache hadoop

  40)  Cheat Sheets –Git

  41)  Cheat Sheets –Mathematica

  42) Cheat Sheets – RedHat Fedora

  43) Cheat Sheets – Unicode

  44) Cheat Sheets – PostgreSQL

  45) Cheat Sheets – MATLAB

  46) Cheat Sheets – Design Patterns
  47) Cheat Sheets – Django Reference Sheet
  48) Cheat Sheets – Flash Quick Reference
  49) Cheat Sheets – Fortran
  50) Cheat Sheets – Adobe flex 3 cheat sheet
  51) Cheat Sheets – Google Chrome Plus
  52) Cheat Sheets – HTTP
  53) Cheat Sheets – Internet Explorer
  54) Cheat Sheets – JavaEE6 Reference Sheet
  55) Cheat Sheets – LISP
  56) Cheat Sheets – Mootools 1.3 cheat sheets
  57) Cheat Sheets – Photoshop
  58) Cheat Sheets – Prototype
  59) Cheat Sheets – QT
  60) Cheat Sheets – Shell Scrip Cheat Sheet
  61) Cheat Sheets – Server Side Includes Qucik Reference
  62) Cheat Sheets – VBasic Quick Ref
  63) Cheat Sheets – ASPCheat Sheet
  64) Cheat Sheets – WebGL Reference
  65) Cheat Sheets – Microsoft NET
  66) Cheat Sheets – Flash ActionScript Quick Ref
  67)  Cheat Sheets – BlueprintCSS
  68) Cheat Sheets – Computer Science
  69) Cheat Sheets – Erlang
  70) Cheat Sheets – Java Server faces
  71) Cheat Sheets – JDBC Best Practices
  72) Cheat Sheets – Core-ASPNet
  73) Cheat Sheets – HTML5 IndexedDB
  74) Cheat Sheets – Using XML Java
  75) Cheat Sheets – HTML5 Canvas Web Standard


web service 返回数据时偶尔会以二进制数据流的方式返回,比如 image/gif,此时可以用文件操作,现将数据流保存成 文件格式,再以操作,比如:

$file = fopen(‘test.gif’, ‘w+’);
fwrite($file, $response->getStockImage_kByteByCodeResult);
echo “good”;


1、股票行情数据 WEB 服务(支持香港、深圳、上海基金、债券和股票;支持多股票同时查询)




支持香港股票、深圳、上海封闭式基金、债券和股票;支持多股票同时查询。数据即时更新。此中国股票行情数据 WEB 服务仅作为用户获取信息之目的,并不构成投资建议。支持使用 | 符号分割的多股票查询。

2、中国开放式基金数据 WEB 服务




中国开放式基金数据 WEB 服务,数据每天15:30以后及时更新。输出数据包括:证券代码、证券简称、单位净值、累计单位净值、前单位净值、净值涨跌额、净值增长率(%)、净值日期。只有商业用户可获得此中国开放式基金数据Web Services的全部功能,若有需要测试、开发和使用请QQ:8698053 或 联系我们

3、中国股票行情分时走势预览缩略图 WEB 服务




中国股票行情分时走势预览缩略图 WEB 服务(支持深圳和上海股市的全部基金、债券和股票),数据即时更新。返回数据:2种大小可选择的股票GIF分时走势预览缩略图字节数组和直接输出该预览缩略图。

4、外汇-人民币即时报价 WEB 服务




外汇-人民币即时报价 WEB 服务, 报价数据即时更新。外汇-人民币即时报价 WEB 服务仅作为用户获取信息之目的,并不构成投资建议。支持人民币对:美元、欧元、英镑、日元、港币、加拿大元、新西兰元、新加坡元、瑞士法郎、瑞典克朗、泰国铢、挪威克朗、澳门元、澳大利亚元、丹麦克朗、菲律宾比索、清算瑞士法郎 等的兑换即时报价。

5、即时外汇汇率数据 WEB 服务




即时外汇汇率数据 WEB 服务,数据即时更新。此外汇汇率数据 WEB 服务支持29种以上基本汇率和交叉汇率即时外汇汇率数据,返回包括:代码、货币名称、最新价、涨跌%、涨跌金额、开盘价、最高价、最低价、震幅%、买入价、卖出价、涨跌颜色和数据时间。实例

6、中国股票行情数据 WEB 服务(支持深圳和上海股市的基金、债券和股票)




中国股票行情数据 WEB 服务,数据即时更新。输出GIF分时走势图、日/周/月K线图、及时行情(股票名称、行情时间、最新价、昨收盘、今开盘、涨跌额、最低、最高、涨跌幅、成交量、成交额、竞买价、竞卖价、委比、买一 – 买五、卖一 – 卖五)。







2、腾讯QQ在线状态 WEB 服务




通过输入QQ号码(String)检测QQ在线状态。返回数据(String)Y = 在线;N = 离线 ;E = QQ号码错误……需要技术支持请:联系我们,欢迎技术交流。 QQ:8698053

3、Email 电子邮件地址验证 WEB 服务




Email 电子邮件地址验证 Web Service,通过查找给定的电子邮件域的邮件服务器和通过向邮件服务器发送数据来判断电子邮件地址正确与否。此Email地址验证Web Service请不要用于任何商业目的,若有需要请联系我们


1、验证码图片 WEB 服务 支持中文、字母、数字




验证码图片 WEB 服务,输出PNG高品质格式的验证码图片和字节流,字符和字符之间的间距和高度随机产生,提高了验证码的安全性。支持中文、字母、数字验证码图片。[演示1] [演示2]


1、2500多个城市天气预报 WEB服务





2、国内飞机航班时刻表 WEB 服务




国内飞机航班时刻表 Web Service 提供:通过出发城市和到达城市查询飞机航班、出发机场、到达机场、出发和到达时间、飞行周期、航空公司、机型等信息。

3、中国电视节目预告(电视节目表) WEB 服务




中国电视节目预告 Web 服务,数据准确可靠,提供全国近800个电视拼道一个星期以上的节目预告数据。一、获得支持的省市(地区)和分类电视列表;二、通过省市ID或分类电视ID获得电视台列表;三、通过电视台ID获得该电视台频道名称;四、通过频道ID获得该频道节目列表。实例

4、火车时刻表 WEB 服务 (第六次提速最新列车时刻表)




火车时刻表 WEB 服务提供:站站查询;车次查询;车站所有车次查询。数据来源时间:2008-04-15 第六次提速最新列车时刻表。本火车时刻表 WEB 服务提供的列车时刻表数据仅供参考,如有异议以当地铁路部门颁布为准。实例





400个国内外主要城市天气预报Web服务,每个城市天气预报数据每0.5小时左右自动更新一次,(原来为每个城市2.5小时更新,为了保证已经引用此服务的部分用户不再重新更新已编写的程序,所以 Endpoint 上的说明没有更改),数据准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。实例


1、[新] 中文<->英文双向翻译WEB服务





2、中文 <-> 英文双向翻译 WEB 服务




中文 <-> 英文双向翻译 WEB 服务,本词典库中大部分单词是由程序根据词频和英<->中单词间相互关联程度自动生成,难免存在有解释错误和牵强的地方请大家谅解。

3、中国邮政编码 <-> 地址信息双向查询/搜索 WEB 服务




中国邮政编码搜索 WEB 服务包含中国全部邮政编码共计187285条记录,是目前最完整的邮政编码数据,精确到乡镇级、城市精确到街道,支持邮政编码<->城市、乡镇、街道的双向查询。此邮政编码查询仅供参考,如邮政编码或地址有变动请以当地邮局为准,也请及时通知我们进行更正。

4、IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据)




IP地址搜索 WEB 服务包含中国和国外已知的IP地址数据,是目前最完整的IP地址数据,记录数量现已超过30万条并还在不断更新和增加中,感谢纯真网络提供IP地址数据来源。因IP地址在不断变化,此IP地址数据查询仅供参考。


1、中文简体字<->繁体字转换 WEB 服务




中文简体字<->繁体字转换 WEB 服务,此Web Services请不要用于任何商业目的,若有需要请联系我们,欢迎技术交流。使用本站 WEB 服务请注明或链接本站: 感谢大家的支持!

2、随机英文、数字和中文简体字 WEB 服务




随机英文、数字和中文简体字 WEB 服务,可用于验证码[演示1] [演示2]及其他方面,这里支持最多不超过8个随机中文简体字,10个随机英文、数字输出(一般也够了:P),如需要更多输出请联系我们



2500多个城市天气预报 WEB服务
股票行情数据 WEB 服务(支持香港、深圳、上海基金、债券和股票;支持多股票同时查询)
中国开放式基金数据 WEB 服务
国内飞机航班时刻表 WEB 服务
中国股票行情分时走势预览缩略图 WEB 服务
外汇-人民币即时报价 WEB 服务
中国电视节目预告(电视节目表) WEB 服务
腾讯QQ在线状态 WEB 服务
即时外汇汇率数据 WEB 服务
中国股票行情数据 WEB 服务(支持深圳和上海股市的基金、债券和股票)
火车时刻表 WEB 服务 (第六次提速最新列车时刻表)
中文简体字<->繁体字转换 WEB 服务
Email 电子邮件地址验证 WEB 服务
验证码图片 WEB 服务 支持中文、字母、数字
中国邮政编码 <-> 地址信息双向查询/搜索 WEB 服务
IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据)


免费使用 Adobe CS5 系列的所有软件

这种方法可以说是一劳永逸,你只需要在本文下方下载 Adobe CS5 通用破解补丁覆盖到相应位置即可。方法如下:

1.下载 Adobe 官方原版安装包,园子已经提供下载链接的 Adobe CS5 系列软件有:Dreamweaver CS5Fireworks CS5Photoshop CS5Flash CS5


3.在本文下方下载破解补丁 amtlib.dll 文件复制到软件的安装目录,覆盖同名文件即可。破解补丁分为32位和64位两种,如果你的系统是64位的话注意选择64位的补丁即可。


如果你安装了多个 Adobe CS5 软件,如同时安装了Dreamweaver CS5、Fireworks CS5等,破解补丁需要覆盖到每个软件的安装目录中。一般情况下 Adobe 系列软件的安装目录如下(其中的“X”表示软件安装时选择的盘符):

Fireworks CS5: X:\Program Files\Adobe\Adobe Fireworks CS5
Dreamweaver CS5: X:\Program Files\Adobe\Adobe Dreamweaver CS5
Flash CS5: X:\Program Files\Adobe\Adobe Flash CS5
Photoshop CS5:X:\Program Files\Adobe\Adobe Photoshop CS5
Illustrator CS5: X:\Program Files\Adobe\Adobe Illustrator CS5\Support Files\Contents\Windows
Premiere Pro CS5: X:\Program Files\Adobe\Adobe Premiere Pro CS5
After Effects CS5: X:\Program Files\Adobe\Adobe After Effects CS5\Support Files
InDesign CS5: X:\Program Files\Adobe\Adobe InDesign CS5


Adobe CS5 通用破解方法二


3.用记事本打开:C:\WINDOWS\system32\drivers\etc 目录下的 hosts 文件,在最后添加如下文字,注意换行:

添加后保存并关闭。更改 hosts 文件主要是防止 Adobe 产品访问产品激活、序列号的验证服务器,从而使序列号长久使用。

4.打开 Adobe CS5 相关软件时,如提示要求输入注册码就使用如下序列号激活软件: