Skip to content

Commit e62fe6a

Browse files
committed
2019年10月11日
0 parents  commit e62fe6a

File tree

50 files changed

+1645
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1645
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.idea
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {string} S
3+
* @return {string}
4+
*/
5+
var removeOuterParentheses = function (S) {
6+
let answer = ''
7+
let height = 0
8+
for (const char of S) {
9+
let isLeft = char === '('
10+
if (isLeft) {
11+
height += 1
12+
} else {
13+
height -= 1
14+
}
15+
if ((isLeft && height === 1) || (!isLeft && height === 0)) {
16+
} else {
17+
answer += char
18+
}
19+
}
20+
return answer
21+
};
22+
23+
console.log(removeOuterParentheses('(()())(())'));
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
<?php
2+
/*
3+
有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。
4+
如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。
5+
给出一个非空有效字符串 S,考虑将其进行原语化分解,使得:S = P_1 + P_2 + ... + P_k,其中 P_i 是有效括号字符串原语。
6+
对 S 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 S 。
7+
8+
 
9+
10+
示例 1:
11+
输入:"(()())(())"
12+
输出:"()()()"
13+
解释:
14+
输入字符串为 "(()())(())",原语化分解得到 "(()())" + "(())",
15+
删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。
16+
17+
示例 2:
18+
输入:"(()())(())(()(()))"
19+
输出:"()()()()(())"
20+
解释:
21+
输入字符串为 "(()())(())(()(()))",原语化分解得到 "(()())" + "(())" + "(()(()))",
22+
删除每隔部分中的最外层括号后得到 "()()" + "()" + "()(())" = "()()()()(())"。
23+
24+
示例 3:
25+
输入:"()()"
26+
输出:""
27+
解释:
28+
输入字符串为 "()()",原语化分解得到 "()" + "()",
29+
删除每个部分中的最外层括号后得到 "" + "" = ""。
30+
 
31+
32+
提示:
33+
S.length <= 10000
34+
S[i] 为 "(" 或 ")"
35+
S 是一个有效括号字符串
36+
*/
37+
38+
class Solution {
39+
40+
// 此方法没有看见 *S 是一个有效括号字符串* 这个条件
41+
public function removeOuterParentheses($S) {
42+
$left = [];
43+
$right = [
44+
-1=>0,
45+
];
46+
for ($i=0; $i < strlen($S); $i++) {
47+
if ($S[$i] === '(') {
48+
if ((1 + $right[$i-1]+1) > 2) {
49+
$left[$i] = 1;
50+
}else{
51+
$left[$i] = 0;
52+
}
53+
$right[$i] = $right[$i-1]+1;
54+
}else{
55+
if ((2 + $right[$i-1]-1) > 2) {
56+
$left[$i] = 1;
57+
}else{
58+
$left[$i] = 0;
59+
}
60+
$right[$i] = $right[$i-1]-1;
61+
}
62+
}
63+
64+
$newS = [];
65+
foreach($left as $key=>$value){
66+
if ($value == 1) {
67+
$newS[] = $S[$key];
68+
}
69+
}
70+
71+
return implode('',$newS);
72+
}
73+
74+
public function removeOuterParenthesesBest($S){
75+
$number = 0;
76+
$newS = '';
77+
for ($i=0; $i < strlen($S); $i++) {
78+
if ($S[$i] === '(') {
79+
if ($number > 0) {
80+
$newS .= $S[$i];
81+
}
82+
$number++;
83+
}else{
84+
$number--;
85+
if ($number > 0) {
86+
$newS .= $S[$i];
87+
}
88+
}
89+
}
90+
return $newS;
91+
}
92+
}
93+
94+
$solution = new Solution();
95+
var_dump($solution->removeOuterParentheses('(()())(())(()(()))'));
96+
var_dump($solution->removeOuterParenthesesBest('(()())(())(()(()))'));
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/**
2+
* @param {string} S
3+
* @return {string}
4+
*/
5+
var removeOuterParentheses = function(S) {
6+
7+
};

algorithms/1025/1025-divisor-game.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
class Solution
4+
{
5+
6+
/**
7+
* @param integer $N
8+
*
9+
* @return bool
10+
*/
11+
public function divisorGame($N)
12+
{
13+
return $N % 2 == 0;
14+
}
15+
}
16+
17+
$solution = new Solution();
18+
var_dump($solution->divisorGame(3));
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
class Solution {
3+
4+
/**
5+
* @param integer[] $heights
6+
* @return integer
7+
*/
8+
public function heightChecker($heights) {
9+
return count(array_diff_assoc($heights,$sort($heights)));
10+
}
11+
}
12+
13+
$solution = new Solution();
14+
var_dump($solution->heightChecker([1,1,4,2,1,3]));
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* @param {string} address
3+
* @return {string}
4+
*/
5+
var defangIPaddr = function (address) {
6+
return address.replace(/\./g, "[.]");
7+
};
8+
9+
var defangIPaddrOne = function (address) {
10+
return (address.split('.')).join('[.]')
11+
};
12+
13+
14+
console.log(defangIPaddr('1.1.1.1'));
15+
console.log(defangIPaddr('255.100.50.0'));
16+
console.log(defangIPaddrOne('1.1.1.1'));
17+
console.log(defangIPaddrOne('255.100.50.0'));
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
/*
3+
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。
4+
所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."。
5+
6+
示例 1:
7+
输入:address = "1.1.1.1"
8+
输出:"1[.]1[.]1[.]1"
9+
10+
示例 2:
11+
输入:address = "255.100.50.0"
12+
输出:"255[.]100[.]50[.]0"
13+
 
14+
提示:
15+
给出的 address 是一个有效的 IPv4 地址
16+
*/
17+
18+
class Solution
19+
{
20+
21+
/**
22+
* @param String $address
23+
*
24+
* @return String
25+
*/
26+
public function defangIPaddr($address)
27+
{
28+
return str_replace('.', '[.]', $address);
29+
}
30+
31+
public function defangIPaddrCycle($address)
32+
{
33+
$newAddress = str_split($address);
34+
foreach ($newAddress as &$value) {
35+
if ($value === '.') {
36+
$value = '[.]';
37+
}
38+
}
39+
unset($value);
40+
return implode("", $newAddress);
41+
}
42+
}
43+
44+
$solution = new Solution();
45+
var_dump($solution->defangIPaddr('0.0.0.0'));
46+
var_dump($solution->defangIPaddr('255.100.50.0'));
47+
var_dump($solution->defangIPaddrOne('0.0.0.0'));
48+
var_dump($solution->defangIPaddrOne('255.100.50.0'));
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
def defangIPaddr(address: str) -> str:
2+
return address.replace('.', '[.]')
3+
4+
5+
def defangIPaddrOne(address: str) -> str:
6+
return '[.]'.join(address.split('.'))
7+
8+
9+
if __name__ == "__main__":
10+
print(defangIPaddr('255.100.50.0'))
11+
print(defangIPaddrOne('255.100.50.0'))
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
class Solution
4+
{
5+
6+
/**
7+
* @param Integer $k
8+
* @param Integer $n
9+
*
10+
* @return Integer[][]
11+
*/
12+
public function combinationSum3($k, $n)
13+
{
14+
$newArr = [];
15+
for ($i = 1; $i < $n; $i++) {
16+
17+
}
18+
}
19+
20+
public function helper()
21+
{
22+
23+
}
24+
}
25+
26+
$solution = new Solution();
27+
var_dump($solution->combinationSum3(3, 7));

0 commit comments

Comments
 (0)