Team Ai
Apppublic

Chyuedu/leetcode_study

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
streamlit_app.py95 linesDownload Raw Back to root
1import streamlit as st2import pandas as pd3 4CSV_PATH = "leetcode_enriched.csv"5 6# ========== Load Data ==========7df = pd.read_csv(CSV_PATH)8df = df.reset_index(drop=True)9 10# session state11if "index" not in st.session_state:12    st.session_state.index = 013 14# ========== Sidebar Filters ==========15st.sidebar.title("๐Ÿ” Filters")16 17search = st.sidebar.text_input("Search title / slug")18 19difficulty_filter = st.sidebar.multiselect(20    "Difficulty",21    ["Easy", "Medium", "Hard"],22    default=["Easy", "Medium", "Hard"]23)24 25tag_filter = st.sidebar.text_input("Tag contains (e.g. dp, graph)")26 27# ========== Filtering ==========28filtered = df.copy()29 30if search:31    filtered = filtered[32        filtered["title"].str.contains(search, case=False, na=False) |33        filtered["slug"].str.contains(search, case=False, na=False)34    ]35 36filtered = filtered[filtered["difficulty"].isin(difficulty_filter)]37 38if tag_filter:39    filtered = filtered[40        filtered["tags"].astype(str).str.contains(tag_filter, case=False, na=False)41    ]42 43# reset index for browsing44filtered = filtered.reset_index(drop=True)45 46st.title("๐Ÿ“˜ LeetCode Manager")47 48st.write(f"Total filtered: {len(filtered)}")49 50# ========== Navigation ==========51if len(filtered) == 0:52    st.warning("No results found.")53    st.stop()54 55idx = st.session_state.index % len(filtered)56row = filtered.iloc[idx]57 58st.subheader(f"{row['id']} - {row['title']}")59st.write(f"Slug: `{row['slug']}`")60 61# ========== Edit Panel ==========62st.divider()63 64difficulty = st.selectbox(65    "Difficulty",66    ["Easy", "Medium", "Hard"],67    index=["Easy", "Medium", "Hard"].index(row["difficulty"])68    if row["difficulty"] in ["Easy", "Medium", "Hard"] else 069)70 71tags = st.text_input("Tags", value=str(row.get("tags", "")))72 73# ========== Save ==========74if st.button("๐Ÿ’พ Save"):75    original_idx = df[df["id"] == row["id"]].index[0]76    df.at[original_idx, "difficulty"] = difficulty77    df.at[original_idx, "tags"] = tags78    df.to_csv(CSV_PATH, index=False)79    st.success("Saved to CSV!")80 81# ========== Navigation buttons ==========82col1, col2, col3 = st.columns(3)83 84with col1:85    if st.button("โฌ… Prev"):86        st.session_state.index -= 187        st.rerun()88 89with col2:90    st.write(f"{idx+1} / {len(filtered)}")91 92with col3:93    if st.button("Next โžก"):94        st.session_state.index += 195        st.rerun()