1+ <?php
2+ /**
3+ * ColorBricks 彩色砖块
4+ *
5+ * @author Pu ShaoWei <[email protected] > 6+ * @date 2017/9/1
7+ * @license MIT
8+ * -------------------------------------------------------------
9+ * 思路分析:额。。。 没做出来求大佬带
10+ * -------------------------------------------------------------
11+ * 小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。
12+ * 现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。
13+ * 如果最多存在一对不同颜色的相邻砖块,那么这行砖块就很漂亮的。
14+ * -------------------------------------------------------------
15+ * 请你帮助小易计算有多少种方式将他所有砖块排成漂亮的一行。(如果两种方式所对应的砖块颜色序列是相同的,那么认为这两种方式是一样的。)
16+ * -------------------------------------------------------------
17+ * 例如: s = "ABAB",那么小易有六种排列的结果:
18+ * "AABB","ABAB","ABBA","BAAB","BABA","BBAA"
19+ * 其中只有"AABB"和"BBAA"满足最多只有一对不同颜色的相邻砖块。
20+ * -------
21+ * 输入描述:
22+ * 输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50), [s中的每一个字符都为一个大写字母(A到Z)]。
23+ * 输出描述:
24+ * 输出一个整数,表示小易可以有多少种方式。
25+ * -------
26+ * 输入例子1:
27+ * ABAB
28+ * 输出例子1:
29+ * 2
30+ * @param $inputting
31+ * @return mixed
32+ */
33+ function ColorBricks ($ inputting )
34+ {
35+ $ str = ord ($ inputting );
36+ $ strLen = strlen ($ inputting );
37+ // if (!($str > 64 && $str < 91) ||
38+ // !(1 <= $strLen && $strLen <= 50)
39+ // ) {
40+ // return false;
41+ // }
42+ $ group = [];
43+ $ temp = '' ;
44+
45+ // 表示标排列 有24 种排列方式
46+ // 0123 0132 0213 0231 0312 0321
47+ // 1023 1032 1203 1230 1320 1302
48+ // 2013 2031 2130 2103 2301 2310
49+ // 3012 3021 3120 3102 3201 3210
50+
51+ // 0123 0132
52+ // 0213 0231
53+ // 0312 0321
54+
55+ // 额。。。 没做出来求大佬带
56+
57+ for ($ i = 1 ; $ i < $ strLen ; $ i ++) {
58+ // $group[$inputting] = true;
59+ for ($ j = 1 ; $ j < $ strLen ; $ j ++) {
60+ echo $ i , $ j , PHP_EOL ;
61+ if (isset ($ inputting [$ i + 1 ])) {
62+ $ temp = $ inputting [$ i ];
63+ $ inputting [$ i ] = $ inputting [$ i + 1 ];
64+ $ inputting [$ i + 1 ] = $ temp ;
65+ }
66+ }
67+ }
68+ var_dump ($ group );
69+ }
70+
71+ echo ColorBricks ("AABB " );
0 commit comments