【Lintcode】318. Character Grid

题目地址:

https://www.lintcode.com/problem/character-grid/description

给定两个字符串 A A A B B B,返回一个矩阵。串 A A A要求从左往右输出,串 B B B要求从上往下输出,两串交于一点(即有一个字母共用)。共用的字母要求是串A中第一个在串B也包含的字母,并且要求交点是两串中各自第一次出现共用的字母的位置。别的位置填.补齐。

先从 A A A中找到第一个包含在 B B B中的字符,然后构造矩阵。代码如下:

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Solution {
    /**
     * @param A: A string
     * @param B: A string
     * @return: A string array
     */
    public List<String> characterGrid(String A, String B) {
        // write your code here.
        List<String> res = new ArrayList<>();
        Set<Character> set = new HashSet<>();
    
        for (int i = 0; i < B.length(); i++) {
            set.add(B.charAt(i));
        }
    
        int posA = -1;
        for (int i = 0; i < A.length(); i++) {
            if (set.contains(A.charAt(i))) {
                posA = i;
                break;
            }
        }
        
        int posB = B.indexOf(A.charAt(posA));
        for (int i = 0; i < B.length(); i++) {
            StringBuilder sb = new StringBuilder();
            for (int j = 0; j < A.length(); j++) {
                if (j != posA) {
                    sb.append('.');
                } else {
                    sb.append(B.charAt(i));
                }
            }
            
            res.add(sb.toString());
        }
        
        res.set(posB, A);
        return res;
    }
}

时空复杂度 O ( l A l B ) O(l_Al_B) O(lAlB)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页